在Windows 7中获取本地端口号

时间:2016-12-20 07:00:28

标签: windows powershell windows-7 powershell-v5.0

我正在努力让所有本地端口处于侦听状态。使用

netstat -a -n

我得到以下输出:

Proto  Local Address          Foreign Address        State
TCP    0.0.0.0:8080             0.0.0.0:0              LISTENING //for example, demo data is given

但我只是不想得到端口号码。

1111 //for ex, this is in listening state.

在Windows 10中,我可以使用

Get-NetTCPConnection -State Listen | group localport -NoElement

哪个有效,但此命令在Windows 7上不可用

1 个答案:

答案 0 :(得分:3)

不确定是否有可用的Windows 7 cmdlet,但您可以解析netstat结果:

$objects = netstat -a -n | 
    select -Skip 4 |
    ForEach-Object {
        $line = $_ -split ' ' | Where-Object {$_ -ne ''}   
        if ($line.Count -eq 4)
        {
           New-Object -TypeName psobject -Property @{
            'Protocol'=$line[0]
            'LocalAddress'=$line[1]
            'ForeignAddress'=$line[2]
            'State'=$line[3]}
        }
    }

然后您可以使用以下内容检索端口:

$objects | Where State -eq LISTENING | Select LocalAddress | Foreach { 
    $_ -replace '.*:(\d+).*', '$1' 
}