2

PowerShell で NETSTAT コマンドを使用しています。XYZ 名で始まり、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 が表示されません。

4

3 に答える 3

4
 $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 が返すテキストを解析した後、必要なデータを簡単に取得できるはずです。

于 2013-03-22T03:10:38.923 に答える
1

実行中の netstat /? 利回り、とりわけ:

-f 外部アドレスの完全修飾ドメイン名 (FQDN) を表示します。

New-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 
于 2013-03-22T00:20:34.847 に答える