2013-03-22 23 views
0

我在PowerShell中使用NETSTAT命令。我需要獲取以XYZ名稱開頭並以ESTABLISHED狀態使用TCP連接的外地址列表。使用NETSTAT爲建立的活動TCP連接獲取外部地址名稱

由於NETSTAT結果如下,我堅持解析。

PS C:\Windows\system32> .\NETSTAT.EXE

Active Connections 

    Proto Local Address   Foreign Address  State 
    TCP 10.125.4.233:2310  157.05.39.133:2492  ESTABLISHED 

我不需要外部地址名稱僅在本地主機上遠程地址。
遠程地址不顯示FQDN。

回答

3
$netstats = netstat -p TCP -f 
$data = $netstats[4..($netstats.count)] #The good info starts on index 4 
foreach($line in $data){ 
    $line = $line -split ' ' | ? {$_ -ne ''} 
    $final += @(New-Object -TypeName psobject -Property @{'Proto'=$line[0];'LAddress'=$line[1];'FAddress'=$line[2];'State'=$line[3]}) 
} 
$netstat_results = $final 
$netstat_results | ? {$_.state -eq 'ESTABLISHED'} 

現在應該很容易得到你想要的數據解析文本的netstat返回後。

+0

好的一個,我的問題得到解決。謝謝。 – praveen 2013-03-22 18:51:51

+0

這對我有幫助,謝謝。 – 2013-07-23 20:10:04

0

運行netstat /?收益率,其中包括:

-f顯示外部 地址的完全限定域名(FQDN)。

解析,使用新PSObjectFromMatches:

netstat -f | 
new-psobjectfrommatches -pattern "(TCP|UDP)\s+(\S+)\s+(\S+):(\S+)\s+(\S+)" -property $nul,TCP/UDP,LocalAddress,ForeignAddress,Protocol,State | 
where {(
     ($_.TCP/UDP -eq 'TCP') -and 
     ($_.State -eq 'ESTABLISHED') -and 
     ($_.ForeignAddress -like 'XYZ*') 
     )} | select -ExpandProperty ForeignAddress 
+0

Coorect,它顯示列表,正如我在我的問題中提到的。我的問題是不同的,如何使用PowerShell解析變量的外國地址名稱列表? – praveen 2013-03-22 00:41:43

+0

啊。那麼,我使用這個:http://gallery.technet.microsoft.com/scriptcenter/New-PSObjectFromMatches-87d8ce87解析netstat輸出是其中的一個例子。 – mjolinor 2013-03-22 00:46:14

+0

沒有運氣,我已經試過這個解決方案。但是,我仍然經歷過。 – praveen 2013-03-22 00:54:29