尧图网站设计 尧图网站设计YAOTU DESIGN
ARTICLE DETAIL

资讯详情

深耕网站设计与一线实操的经验洞察。

告别黑窗口:用Windows资源监视器和PowerShell更优雅地查看端口与进程

告别黑窗口:用Windows资源监视器和PowerShell更优雅地查看端口与进程 告别黑窗口用Windows资源监视器和PowerShell更优雅地查看端口与进程每次排查端口冲突或系统性能问题时面对CMD窗口里密密麻麻的netstat输出是不是总有种在数据迷宫里打转的无力感其实Windows早已为我们准备了更高效的解决方案。本文将带你解锁资源监视器的图形化魔法和PowerShell的脚本化威力让系统监控变得像看仪表盘一样直观。1. 资源监视器藏在任务管理器里的瑞士军刀很多人不知道Windows自带的资源监视器Resource Monitor其实是比任务管理器更强大的存在。按住CtrlShiftEsc唤出任务管理器后切换到性能标签点击底部的打开资源监视器一个可视化监控神器就此展开。网络标签页的TCP连接区域会实时显示所有活跃连接的本地/远程地址与端口发送/接收的字节数关联进程的PID和名称更妙的是支持点击表头排序比如按端口排序后所有端口占用情况一目了然。遇到可疑连接时右键菜单可以直接结束进程比CMD里手动查PID再taskkill流畅得多。提示在概述标签页的CPU监控区域勾选特定进程后其他标签页会自动过滤只显示该进程相关资源这个联动功能在排查具体应用问题时特别实用。2. PowerShell的现代化武器库如果说资源监视器是图形化利器那么PowerShell就是脚本化神器。抛弃古老的netstat试试这些更强大的命令# 获取所有TCP连接详情类似netstat -ano但信息更丰富 Get-NetTCPConnection | Format-Table -AutoSize # 查找特定端口如8080的占用进程 Get-Process -Id (Get-NetTCPConnection -LocalPort 8080).OwningProcess # 一次性获取所有监听端口的进程信息管理员权限运行 Get-NetTCPConnection -State Listen | Select-Object LocalAddress, LocalPort, {NameProcess;Expression{(Get-Process -Id $_.OwningProcess).Name}}, {NamePID;Expression{$_.OwningProcess}} | Sort-Object LocalPort | Format-TablePowerShell的优势在于对象化输出便于二次处理可以轻松组合多个命令形成工作流支持导出为CSV/JSON等格式3. 高阶技巧打造你的监控仪表盘将PowerShell与资源监视器结合可以创建持久化监控方案# 端口监控脚本示例保存为.ps1文件 while($true) { Clear-Host Get-NetTCPConnection -State Established | Group-Object -Property OwningProcess | Select-Object {nProcess;e{(Get-Process -Id $_.Name).Name}}, Count, {nPorts;e{$_.Group.LocalPort -join ,}} | Sort-Object Count -Descending | Format-Table -AutoSize Start-Sleep -Seconds 5 }这个脚本会每5秒刷新一次按连接数降序显示所有建立连接的进程。想要更直观可以配合PowerShell的图形化模块# 需要先安装模块Install-Module -Name Microsoft.PowerShell.ConsoleGuiTools Import-Module Microsoft.PowerShell.ConsoleGuiTools Get-NetTCPConnection | Out-ConsoleGridView4. 常见问题排错指南当遇到端口被占用但找不到进程的情况时可以尝试以下排查流程验证端口状态Test-NetConnection -Port 8080 -ComputerName localhost检查隐藏进程Get-Process | Where-Object {$_.MainWindowTitle -eq } | Select-Object Id, Name, Path查看系统服务Get-Service | Where-Object {$_.Status -eq Running} | Select-Object Name, DisplayName网络驱动排查Get-NetAdapter | Where-Object {$_.Status -eq Up} | Get-NetTCPConnection -AssociatedNetAdapter对于顽固的端口占用可以结合资源监视器的CPU标签页勾选显示所有进程后检查系统进程。5. 效率提升创建你的快捷指令把常用操作封装成快捷指令能大幅提升效率# 在$PROFILE文件中添加以下函数 function Show-Ports { param( [int]$Port, [string]$State Listen ) $connections Get-NetTCPConnection -State $State if ($Port) { $connections $connections | Where-Object {$_.LocalPort -eq $Port} } $connections | ForEach-Object { [PSCustomObject]{ LocalAddress $_.LocalAddress LocalPort $_.LocalPort ProcessName (Get-Process -Id $_.OwningProcess -ErrorAction SilentlyContinue).Name PID $_.OwningProcess State $_.State } } | Sort-Object LocalPort | Format-Table -AutoSize }保存后只需输入Show-Ports -Port 8080就能一键查看该端口详情或者Show-Ports -State Established查看所有活跃连接。在资源监视器方面可以创建直接打开特定标签页的快捷方式resmon.exe /net这个命令会直接打开资源监视器的网络监控页。
返回列表