2

この小さなPowerShellスクリプトを使用して、5秒ごとにnetstat -ano出力を探し、任意のIPアドレスのポート80で発信接続のみをフィルタリングし、ソケットを開いた関連プロセスをキャッチしようとしています。ここでの問題は、出力に複数のエントリがある場合、配列を処理できないことだと思います。ここに何が欠けていますか?これを行うためのより良い方法はありますか?

while(1) {netstat -ano | ? {$_ -like "*10.10.10.10:* *:80 *"} |
  % {
  $_ -match "\d+$";
$matches | ForEach-Object {
   Get-Process -id $matches[0] | Format-List *;
   (Get-Process -id $matches[0]).WaitForExit()
}
  Start-Sleep -s 5;
  }
}
4

1 に答える 1

1

Shay Levynetstatは、情報をフィルタリングするのに役立つ情報を操作する関数を作成し、フィルタリングしやすい方法で出力します:実行中のプロセスとそのポート番号を見つける方法

注: ほとんどの人は、ページが見つからない場合に備えて、ここにコードを投稿するように言っていることを知っています。Shay は、状況の変化や改善 (IPv6 接続のサポートの追加など) に応じてこのページを更新しているため、すぐに削除することはないと思います。

Get-NetworkStatisticsを参照してください。

> Get-NetworkStatistics | where Localport -eq 8000


ComputerName  : DESKTOP-JL59SC6
Protocol      : TCP
LocalAddress  : 0.0.0.0
LocalPort     : 8000
RemoteAddress : 0.0.0.0
RemotePort    : 0
State         : LISTENING
ProcessName   : node
PID           : 11552
于 2012-08-12T03:55:19.277 に答える