netstat无法找到进程时,如何用Get-Process通过端口获取dotnet进程ID
解决方法
1. 用PowerShell原生命令关联端口与dotnet进程
netstat有时会出现解析错误或无法正确关联进程的情况,改用Get-NetTCPConnection(PowerShell专属命令)能更准确获取端口对应的进程ID:
# 指定目标端口(比如你截图里的5100) $targetPort = 5100 # 获取监听该端口的进程ID $processPID = (Get-NetTCPConnection -LocalPort $targetPort -ErrorAction SilentlyContinue).OwningProcess
2. 验证并终止目标dotnet进程
因为你确认目标是dotnet进程,可先验证PID归属再终止:
if ($processPID) { $targetProcess = Get-Process -Id $processPID -Name dotnet -ErrorAction SilentlyContinue if ($targetProcess) { Stop-Process -Id $processPID -Force Write-Host "已成功终止监听端口$targetPort的dotnet进程(PID: $processPID)" } else { Write-Host "端口$targetPort对应的进程不是dotnet进程" } } else { Write-Host "未找到监听端口$targetPort的进程" }
3. 一步到位的简化命令
也可以用管道串联命令直接过滤并终止:
Get-NetTCPConnection -LocalPort 5100 | Where-Object { (Get-Process -Id $_.OwningProcess -ErrorAction SilentlyContinue).Name -eq 'dotnet' } | ForEach-Object { Stop-Process -Id $_.OwningProcess -Force }
补充说明
你之前用netstat得到PID4,是因为PID4是Windows系统进程(System),大概率是netstat的空格分割解析逻辑出错,误把系统进程当成了目标进程。而Get-NetTCPConnection直接从系统获取TCP连接的进程关联数据,可靠性更高。
内容的提问来源于stack exchange,提问作者Rajeev Menon
相关产品推荐
相关产品推荐

