現在、PowerShellでいくつかのロジックを使用して、netstat -ano
すべてのTCPとUDPの結果を取得し、表示する必要がない結果をフィルタリングしてCSVにエクスポートしています。結果には、聞いているそして(空白)そして非ループバック IP。
一例としては、 が挙げられますnetstat -ano | Where-Object{$_ -notlike '*127.?.?.?*' -and $_ -notmatch '\[::1]' -and $_ -notmatch 'TIME_WAIT' -and $_ -notmatch 'CLOSE*' -and $_ -notmatch 'ESTABLISHED' -and $_ -notmatch 'SYN_*' -and $_ -notmatch 'FIN_*'}
。
しかし、スクリプトを同時に実行しているときに、他のタイミングで表示される可能性のある他のオプションを見逃したくはありません。私が見つけたオプションの1つは、最終確認私たちのロジックにまだ含まれていない他のオプションが何があるかはわかりません。
それらの一致をすべて除外するのではなく、ロジックを反転して、次のいずれかの一致のみを含める方法はありますか?(空白)または聞いているまたは非ループバック IP? そうでない場合は、そのロジックにさらに追加できますが、専門家の意見を聞きたいだけです。
答え: すべての州を見つけましたここそして、これらすべてを含めるように更新しました。
答え1
必要がないのに車輪の再発明をしないでください。正当な質問は、Web 上でさまざまな方法で何度も尋ねられ、回答されている可能性があります。1 回の検索で絶対的な答えが見つからない場合があり、異なる文字列、文字列一致、文字列完全一致、文字列部分一致、サイト固有の一致などを使用して検索する必要があるかもしれません。
ヒット
Get-NetworkStatistics - フィルタリング付き netstat -ano
このコードは、Shay Levy の Get-NetworkStatistics 関数から借用したものです。この関数は、ローカルまたはリモート システムで netstat -ano を実行し、指定された場合はプロセス名、アドレス、ポート、プロトコル、または状態で結果をフィルターします。プロセス名は、get-process を使用して各 PID に対して取得されます。
https://gallery.technet.microsoft.com/scriptcenter/Get-NetworkStatistics-66057d71
そのまま使用するか、必要に応じて変更してください。
答え2
あなたが望んでいることに対応する 1 つの方法は、テキスト行を、必要に応じてフィルタリングできる PoSh オブジェクトに変換することです。これは、3、4 年前に書いた古いコードです。
それは何をするのか...
- 呼び出しの結果を
netstat
$Varに保存します - 不要な線を消す
- 各行をCSV行に変換します
- CSV行のコレクションをPoShオブジェクトの配列に変換します
- コレクションを表示する
.PID
0番目のオブジェクトのプロパティを表示します
コード ...
$Raw_Result = netstat -a -o -n
# get rid of the unwanted 1st three lines
$Raw_Result = $Raw_Result | Select-Object -Skip 3
# remove the `---` line
$Raw_Result = $Raw_Result | Select-String -Pattern '[^---]'
$Cleaned_Result = foreach ($Line in $Raw_Result)
{
$Line = $Line.ToString().Trim()
if ($Line[53] -eq ' ')
{
$Line = $Line.Insert(53, '-NA-')
}
$Line = $Line -replace ' {2,}', ','
$Line
}
$Final_Result = $Cleaned_Result | ConvertFrom-Csv
#$Raw_Result
#$Cleaned_Result
$Final_Result
Write-Output ''
$Final_Result[0].PID
出力が切り捨てられました...
Proto : UDP
Local Address : [::]:55356
Foreign Address : *:*
State : -NA-
PID : 3352
[*...snip...*]
Proto : UDP
Local Address : [fe80::d129:4be7:98da:e357%14]:53382
Foreign Address : *:*
State : -NA-
PID : 3908
1308
この作業のメリットは、かなり標準的なオブジェクトのコレクションを簡単に並べ替えたりフィルタリングしたりできることです。[ニヤリ]
答え3
すべての州を見つけましたここそして、LAST を含めるように更新したところ、すべて揃いました。内容は以下の通りです。
CLOSE_WAIT、CLOSED、ESTABLISHED、FIN_WAIT_1、FIN_WAIT_2、LAST_ACK、LISTEN、SYN_RECEIVED、SYN_SEND、および TIME_WAIT。