asp.net 如何使用Get-Process powershell命令通过端口号获取进程的ID

xpszyzbs  于 2023-03-24  发布在  .NET
关注(0)|答案(2)|浏览(144)

我需要杀死一个进程,当我使用netstat命令时,它没有列出。下面的命令将找到进程id为4,这不是我要找的进程。

$processPID =  $($(netstat -aon | findstr '5000')[0] -split '\s+')[-1]
    Stop-Process $processPID

我知道我需要的过程是在以下的结果。
Get-Process -Name dotnet
我找不到一种方法来使用Get-Process来使用端口过滤器。对于dotnet人员的信息,我正在使用powershell中的dotnet CLI命令运行项目。
在下面的屏幕截图中,您可以看到在端口5100上侦听的进程的进程ID

rjzwgtxy

rjzwgtxy1#

使用Get-NetTCPConnection cmdlet可获得与netstat相同的输出,但作为结构化对象而不是文本:

Get-NetTCPConnect -LocalPort 5000 |Get-Process -Id {$_.OwningProcess} -IncludeUsername:$false
zkure5ic

zkure5ic2#

如上所述,这里有一个函数用于获取PID,这取决于它是LocalPort还是RemotePort。

function Get-ProcessByPort {
    param(
        [int]$Port,
        [ValidateSet('LocalPort', 'RemotePort')]
        [string]$PortType = 'LocalPort'
    )

    $splat = @{
        $PortType = $Port
    }

    $processes = Get-NetTCPConnection @splat | Select-Object -ExpandProperty OwningProcess | ForEach-Object { Get-Process -Id $_ } | Select-Object -Unique
    return $processes | Select-Object -ExpandProperty Id
}

相关问题