如何借助PowerShell定位占用端口的服务进程

作者:袖梨 2026-07-12
PowerShell 是 Windows 下定位端口占用进程最直接高效的方式,可一步获取进程名、PID及路径;支持仅查 PID、解析 svchost.exe 托管服务、批量检查多端口状态。

powershell 是 windows 下定位端口占用进程最直接高效的方式,它能一步关联端口与进程名,无需手动查 pid 再反推。

直接获取进程名称和 PID

以管理员身份运行 PowerShell(右键“开始”→“终端(管理员)”),执行:

Get-NetTCPConnection -LocalPort 8080 | ForEach-Object { Get-Process -Id $_.OwningProcess -ErrorAction SilentlyContinue } | Select-Object Name, Id, Path

8080 换成你要查的实际端口号。输出会直接显示进程名(如 java.exe)、PID 和可执行文件完整路径,一目了然。

只查 PID 但更轻量

如果只需快速拿到 PID,用这句更简洁:

Get-NetTCPConnection -LocalPort 8080 | Select-Object OwningProcess, State

结果中 OwningProcess 列就是 PID,State 列为 Listen 表示该进程正在监听此端口,不是临时连接。

处理 svchost.exe 这类通用宿主进程

若返回的进程名是 svchost.exe,说明它托管了某个 Windows 服务。此时需进一步确认具体服务:

  • 记下上一步得到的 PID(比如 1234)
  • 运行:tasklist /svc /fi "pid eq 1234"
  • 输出中 “服务”列会列出实际启用的服务名,例如 DhcpW3SVCWinRM

批量检查多个端口是否被占用

一次查几个常用端口(如 3306、6379、5432),可用:

80, 443, 8080, 3306 | ForEach-Object { Get-NetTCPConnection -LocalPort $_ -ErrorAction SilentlyContinue } | Select-Object LocalPort, State, OwningProcess | Sort-Object LocalPort

结果按端口号排序,方便横向比对状态和 PID,适合部署前快速巡检。

相关文章

精彩推荐