我在机器上安装了一些网站和服务.它们被分配了端口号.现在,每次我想安装新服务器时,我都要检查端口,看看是否再次使用现有的端口号.
我想写一个我知道是的,可以编写一个脚本,这将有助于获取服务和网站使用的端口号…但是从get-process例如,没有办法获得端口.
解决方法
可能是一个愚蠢的答案,但为什么不:
$procstats = netstat -o
是的,我知道,管理那些字符串并不是很容易.看here.
认真解决
最具体的方法是使用win32 GetExtendedTcpTable
,它允许您检索TCP端点列表以及PID. this post中的解决方案提供了一个powershell绑定到c#netstat函数,该函数实现了win32函数.它看起来很不错.
获得端点连接的端口/ PID /地址后,可以利用System.Net.NetworkInformation
类来获取有关连接的信息和统计信息.
在get-netstat上进行一些测试之后
它就像一个魅力.例如,以下单行获取在端口63775上建立的所有TCP连接(远程/本地)以及PID:
. .\get-nestat.ps1 $netstat = get-netstat | ? {($_.localport -eq 63775 -or $_.remoteport -eq 63775) -and $_.protocol -eq TCP -and $_.state -eq 'ESTABLISHED'} | select PID,PIDName,State,LocalIP,RemoteIP