PowerShell 中的 netstat 過濾邏輯包含/排除

PowerShell 中的 netstat 過濾邏輯包含/排除

目前,我們使用 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_*'}

但是,如果我們碰巧同時運行腳本,我們不想錯過其他時間可能出現的其他選項。我剛剛發現的一個是最後_ACK我不知道還有哪些其他選項是我們的邏輯尚未包含的。

有沒有一種方法可以翻轉該邏輯,而不是過濾掉所有這些匹配項,我們可以只包含以下匹配項嗎(空白的)或者聽力或者非環回IP?如果沒有,我可以在這個邏輯中添加更多內容,但只是想看看一些專家的想法。

答:我找到了所有的州這裡並剛剛更新它以包含所有這些。

答案1

不必要時不要重新發明輪子。任何合法的問題都可能已經在網路上以多種方式被多次提出和回答。您可能無法在一次搜尋中找到絕對答案,並且可能需要使用不同的字串、字串匹配、精確字串匹配、部分字串匹配、特定於網站的匹配等進行搜尋。

例子: 'powershell 過濾器 netstat'

命中

取得網路統計 - netstat -ano 帶過濾

此程式碼借用 Shay Levy 的 Get-NetworkStatistics 函數。此函數在本機或遠端系統上執行 netstat -ano 並按進程名稱、位址、連接埠、協定或狀態(如果指定)過濾結果。使用 get-process 為每個 PID 提取進程名稱。

https://gallery.technet.microsoft.com/scriptcenter/Get-NetworkStatistics-66057d71

下載:https://gallery.technet.microsoft.com/scriptcenter/Get-NetworkStatistics-66057d71/file/68504/10/Get-NetworkStatistics.ps1

按原樣使用或根據需要進行修改。

答案2

這是處理我認為您想要的內容的一種方法...將文字行轉換為 PoS​​h 對象,您可以根據需要進行過濾。這是我三、四年前寫的舊程式碼。

它能做什麼 ...

  • 將呼叫結果儲存netstat到 $Var
  • 清除不需要的線條
  • 將每一行轉換為 CSV 行
  • 將 CSV 行集合轉換為 PoS​​h 物件數組
  • 顯示集合
  • 顯示.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

我找到了所有的州這裡並剛剛更新它以包含最後一個,現在它們都在那裡。它們如下:

CLOSE_WAIT、CLOSED、ESTABLISHED、FIN_WAIT_1、FIN_WAIT_2、LAST_ACK、LISTEN、SYN_RECEIVED、SYN_SEND 和 TIME_WAIT。

相關內容