需求:想把netstat-an吐出來的資料統計一下,看看本地連外地有多少個,外地連本地有多少個。協定分類什麼的。
注意:因為netstat是cmd的指令,盡管在PowerShell下可以運作這個指令,但是吐出來的資料是沒辦法在加工的,它不是PowerShell原生指令。是以解決方法是把資料吐到一個csv檔案中,然後針對CSV進行加工,最後得到需要的統計資訊。
首先來一個中文版的,經過測試,需要PowerShell3.0以上,也就是Windows Server 2012以上的版本(windows8以上也可以)。
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
<code>#Powered By kukisama http://jiushu.blog.51cto.com/</code>
<code>netstat -an </code><code>|Out</code><code>-File</code> <code>-Encoding utf8 D:\3456.csv</code>
<code>$files</code> <code>= (</code><code>Get-Childitem</code> <code>d:\3456.csv).pspath</code>
<code>$content</code> <code>= </code><code>get-content</code> <code>$files</code>
<code>clear-content</code> <code>$files</code>
<code>add-Content</code> <code>$files</code> <code>-Value </code><code>"協定,本地IP位址,端口,對端IP位址,對端端口,狀态"</code>
<code>foreach</code> <code>(</code><code>$line</code> <code>in</code> <code>$content</code> <code>-ne</code> <code>"活動連接配接"</code> <code>-ne</code> <code>" 協定 本地位址 外部位址 狀态"</code><code>)</code>
<code> </code><code>{</code>
<code> </code><code>$liner</code> <code>= </code><code>$line</code><code>.Replace(</code><code>"[::1]"</code><code>,</code><code>"本地"</code><code>);</code>
<code> </code><code>$line</code> <code>= </code><code>$liner</code>
<code> </code><code>$liner</code> <code>= </code><code>$line</code><code>.Replace(</code><code>"[::]"</code><code>,</code><code>"本地"</code><code>);</code>
<code> </code><code>$line</code> <code>= </code><code>$liner</code> <code>-replace</code><code>(</code><code>"\s{1,}"</code> <code>,</code><code>","</code><code>)</code>
<code> </code><code>$liner</code> <code>= </code><code>$line</code>
<code> </code><code>$line</code> <code>= </code><code>$liner</code> <code>-replace</code><code>(</code><code>":{1,}"</code> <code>,</code><code>" "</code><code>)</code>
<code> </code><code>$liner</code> <code>= </code><code>$line</code><code>.Replace(</code><code>",TCP"</code><code>,</code><code>"TCP"</code><code>)</code>
<code> </code><code>$liner</code> <code>= </code><code>$line</code><code>.Replace(</code><code>",UDP"</code><code>,</code><code>"UDP"</code><code>)</code>
<code> </code><code>$liner</code> <code>= </code><code>$line</code><code>.Replace(</code><code>"127.0.0.1"</code><code>,</code><code>"本地"</code><code>)</code>
<code> </code><code>$liner</code> <code>= </code><code>$line</code><code>.Replace(</code><code>"0.0.0.0"</code><code>,</code><code>"本地"</code><code>)</code>
<code> </code><code>$liner</code> <code>= </code><code>$line</code><code>.Replace(</code><code>"LISTENING"</code><code>,</code><code>"監聽"</code><code>)</code>
<code> </code><code>$liner</code> <code>= </code><code>$line</code><code>.Replace(</code><code>"ESTABLISHED"</code><code>,</code><code>"等待"</code><code>)</code>
<code> </code><code>$liner</code> <code>= </code><code>$line</code><code>.Replace(</code><code>"TIME_WAIT"</code><code>,</code><code>"已建立連接配接"</code><code>)</code>
<code> </code><code>$liner</code> <code>= </code><code>$line</code><code>.Replace(</code><code>"CLOSE_WAIT"</code><code>,</code><code>"關閉等待"</code><code>)</code>
<code> </code><code>$liner</code> <code>= </code><code>$line</code><code>.Replace(</code><code>"SYN_SENT"</code><code>,</code><code>"同步發送"</code><code>)</code>
<code> </code><code>add-Content</code> <code>$files</code> <code>-Value </code><code>$liner</code> <code>-Encoding </code><code>Default</code>
<code> </code><code>} </code>
<code>$bb</code> <code>= </code><code>Import-Csv</code> <code>-Path d:/3456.csv -Encoding </code><code>Default</code>
<code>echo </code><code>"====================================="</code>
<code>echo </code><code>"以下為協定計數"</code>
<code>$bb</code><code>| </code><code>Group-Object</code> <code>–Property:協定</code><code>|select</code> <code>Name,Count</code><code>|sort</code> <code>-Property count</code>
<code>echo </code><code>"以下為您本地IP連接配接外端位址的統計資料"</code>
<code>$bb</code><code>| </code><code>Group-Object</code> <code>–Property:本地IP位址</code><code>|select</code> <code>Name,Count</code><code>|sort</code> <code>-Property count</code>
<code>echo </code><code>"以下為外端位址連接配接您本地IP的統計資料"</code>
<code>$bb</code><code>| </code><code>Group-Object</code> <code>–Property:對端IP位址</code><code>|select</code> <code>Name,Count</code><code>|sort</code> <code>-Property count</code>
<code>echo </code><code>"以下為狀态計數"</code>
<code>$bb</code><code>| </code><code>Group-Object</code> <code>–Property:狀态</code><code>|select</code> <code>Name,Count</code><code>|sort</code> <code>-Property count</code>
再來一個英文版的,因為在PowerShell2.0 也就是Windows Server 2008 R2中,是沒有-Encoding Default參數的,是以要删了它,改成全英文的描述和說明。是以用中文裝逼是失敗的了。是以建議大家也盡量更新PowerShell到4.0(Windows Server 2008 R2是可以更新PowerShell的)
這裡要說明一下的是,該文檔隻适合中文和英文系統,其他語種你需要修改第7行,增加更多-ne的屬性。
<code>netstat -an </code><code>|Out</code><code>-File</code> <code>D:\3456.csv</code>
<code>add-Content</code> <code>$files</code> <code>-Value </code><code>"proto,localAddress,duankou,duiduanip,duiduanduanou,zhuangtai"</code>
<code>foreach</code> <code>(</code><code>$line</code> <code>in</code> <code>$content</code> <code>-ne</code> <code>"active connections"</code> <code>-ne</code> <code>" proto local address foreign address state"</code> <code>-ne</code> <code>"活動連接配接"</code> <code>-ne</code> <code>" 協定 本地位址 外部位址 狀态"</code><code>)</code>
<code> </code><code>$liner</code> <code>= </code><code>$line</code><code>.Replace(</code><code>"[::1]"</code><code>,</code><code>"local"</code><code>);</code>
<code> </code><code>$liner</code> <code>= </code><code>$line</code><code>.Replace(</code><code>"[::]"</code><code>,</code><code>"local"</code><code>);</code>
<code> </code><code>$liner</code> <code>= </code><code>$line</code><code>.Replace(</code><code>"127.0.0.1"</code><code>,</code><code>"local"</code><code>)</code>
<code> </code><code>$liner</code> <code>= </code><code>$line</code><code>.Replace(</code><code>"0.0.0.0"</code><code>,</code><code>"local"</code><code>)</code>
<code> </code><code><# $liner = $line.Replace("LISTENING","監聽")</code>
<code> </code><code>$line = $liner</code>
<code> </code><code>$liner = $line.Replace("ESTABLISHED","等待")</code>
<code> </code><code>$liner = $line.Replace("TIME_WAIT","已建立連接配接")</code>
<code> </code><code>$liner = $line.Replace("CLOSE_WAIT","關閉等待")</code>
<code> </code><code>$liner = $line.Replace("SYN_SENT","同步發送")#></code>
<code> </code><code>add-Content</code> <code>$files</code> <code>-Value </code><code>$liner</code>
<code>$files</code>
<code>$bb</code> <code>= </code><code>Import-Csv</code> <code>-Path d:\3456.csv </code>
<code>$bb</code><code>| </code><code>Group-Object</code> <code>–Property:proto</code><code>|select</code> <code>Name,Count</code><code>|sort</code> <code>-Property count</code>
<code>$bb</code><code>| </code><code>Group-Object</code> <code>–Property:localAddress</code><code>|select</code> <code>Name,Count</code><code>|sort</code> <code>-Property count</code>
<code>$bb</code><code>| </code><code>Group-Object</code> <code>–Property:duiduanip</code><code>|select</code> <code>Name,Count</code><code>|sort</code> <code>-Property count</code>
<code>$bb</code><code>| </code><code>Group-Object</code> <code>–Property:zhuangtai</code><code>|select</code> <code>Name,Count</code><code>|sort</code> <code>-Property count</code>
輸出結果如下
<a href="http://s3.51cto.com/wyfs02/M02/6E/BB/wKiom1WD3vfz5htzAAFCKGwfCSs330.jpg" target="_blank"></a>
本文轉自 九叔 51CTO部落格,原文連結:http://blog.51cto.com/jiushu/1663669,如需轉載請自行聯系原作者