必须以管理员身份运行命令工具才能完整查看Windows监听端口;使用netstat -ano可列出所有LISTENING的TCP和无Foreign Address的UDP端口,结合findstr、tasklist或PowerShell可精准定位占用程序,资源监视器提供图形化实时监控,PowerShell脚本支持批量导出CSV。

要确认Windows系统当前正在监听哪些网络端口,以便排查程序冲突、安全风险或远程访问配置问题,必须获取处于LISTENING状态的TCP端口和无Foreign Address的UDP端口信息。普通用户权限无法读取全部服务端口,【必须以管理员身份运行工具】,否则netstat或PowerShell将遗漏svchost、lsass等关键系统进程占用的端口。
用命令提示符快速列出所有开放端口
按下 Win + R,输入 cmd,回车;右键任务栏中刚打开的命令提示符窗口标题栏 → 选择“以管理员身份运行”。
输入命令:netstat -ano,按回车执行。
在输出结果中,逐行检查State列:所有显示为 LISTENING 的TCP行,以及UDP行中Local Address含端口号但Foreign Address为空的条目,即为本机当前开放并监听的端口。每行末尾数字是对应进程的PID(进程标识符),后续可据此定位程序。
精准查找某个端口被哪个程序占用
方法一:用findstr筛选特定端口(推荐用于已知端口号)
在管理员命令提示符中,输入:netstat -ano | findstr ":3389"(将3389替换为你想查的实际端口号)。注意冒号不能省略,否则会匹配到83389、33890等无关端口。
方法二:直接查PID对应进程名
从上一步输出中提取最右侧的PID(例如1234),再输入:tasklist | findstr "1234"。若返回结果为空,说明该PID进程已退出,但端口尚未完全释放,需等待或重启相关服务。
方法三:PowerShell一步到位查进程名
右键开始菜单 → 选择“Windows PowerShell(管理员)”,输入:Get-Process -Id (Get-NetTCPConnection -LocalPort 3389).OwningProcess -ErrorAction SilentlyContinue | Select-Object ProcessName, Id。这条命令跳过PID中转环节,直接返回进程名称和ID,【适用于Windows 10 1607及以上版本】。
图形化查看监听端口(无需记命令)
第一步:按 Ctrl + Shift + Esc 打开任务管理器。
第二步:点击底部“性能”选项卡 → 左下角点击“打开资源监视器”。
第三步:切换到“网络”选项卡 → 展开“监听端口”区域。
第四步:列表中直接显示本地地址、端口号、协议、进程名称和PID,双击任意行可高亮对应进程在“CPU”或“磁盘”页中的位置。
这一步操作起来很简单,直接把文件拖进去就行。资源监视器能实时刷新,比命令行更适合边调试边观察端口变化。
用PowerShell批量导出监听端口详情
① 右键开始按钮 → 选择“Windows PowerShell(管理员)”。
② 输入以下命令并回车:Get-NetTCPConnection -State Listen | ForEach-Object { $_ | Add-Member -MemberType NoteProperty -Name ProcessName -Value (Get-Process -Id $_.OwningProcess -ErrorAction SilentlyContinue).Name -PassThru } | Select-Object LocalAddress, LocalPort, State, ProcessName | Export-Csv -Path "$env:USERPROFILE\Desktop\open_ports.csv" -NoTypeInformation。
③ 检查桌面生成的 open_ports.csv 文件,用Excel打开即可排序、筛选、打印。
该脚本自动补全进程名,避免手动匹配PID出错;导出为CSV格式便于存档比对。如果报错提示“无法绑定参数”,说明某进程已终止但连接未清理,忽略该行即可,不影响其余结果。











