需求:想把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
#Powered By kukisama   http://jiushu.blog.51cto.com/
netstat -an |Out-File -Encoding utf8 D:\3456.csv
$files = (Get-Childitem d:\3456.csv).pspath
$content get-content $files
clear-content $files
add-Content $files -Value "协议,本地IP地址,端口,对端IP地址,对端端口,状态"
foreach ($line in $content -ne "活动连接" -ne "  协议  本地地址          外部地址        状态")
   {
   $liner $line.Replace("[::1]","本地");
   $line $liner
   $liner $line.Replace("[::]","本地");
   $line $liner
   $line $liner -replace("\s{1,}" ,",")
   $liner $line
   $line $liner -replace(":{1,}" ," ")
   $liner $line
   $liner $line.Replace(",TCP","TCP")
   $line $liner
   $liner $line.Replace(",UDP","UDP")
   $line $liner
   $line $liner -replace("\s{1,}" ,",")
   $liner $line
   $liner $line.Replace("127.0.0.1","本地")
   $line $liner
   $liner $line.Replace("0.0.0.0","本地")
   $line $liner
   $liner $line.Replace("LISTENING","监听")
   $line $liner
   $liner $line.Replace("ESTABLISHED","等待")
   $line $liner
   $liner $line.Replace("TIME_WAIT","已建立连接")
   $line $liner
   $liner $line.Replace("CLOSE_WAIT","关闭等待")
   $line $liner
   $liner $line.Replace("SYN_SENT","同步发送")
   add-Content $files -Value $liner -Encoding Default
      
 
 
$bb Import-Csv -Path d:/3456.csv -Encoding Default
echo "====================================="
echo "以下为协议计数"
$bbGroup-Object –Property:协议|select Name,Count|sort -Property count
echo "====================================="
echo "以下为您本地IP连接外端地址的统计数据"
$bbGroup-Object –Property:本地IP地址|select Name,Count|sort -Property count
echo "====================================="
echo "以下为外端地址连接您本地IP的统计数据"
$bbGroup-Object –Property:对端IP地址|select Name,Count|sort -Property count
echo "====================================="
echo "以下为状态计数"
$bbGroup-Object –Property:状态|select Name,Count|sort -Property count

再来一个英文版的,因为在PowerShell2.0 也就是Windows Server 2008 R2中,是没有-Encoding Default参数的,所以要删了它,改成全英文的描述和说明。所以用中文装逼是失败的了。因此建议大家也尽量升级PowerShell到4.0(Windows Server 2008 R2是可以升级PowerShell的)

这里要说明一下的是,该文档只适合中文和英文系统,其他语种你需要修改第7行,增加更多-ne的属性。

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
#Powered By kukisama   http://jiushu.blog.51cto.com/
netstat -an |Out-File  D:\3456.csv
$files = (Get-Childitem d:\3456.csv).pspath
$content get-content $files
clear-content $files
add-Content $files -Value "proto,localAddress,duankou,duiduanip,duiduanduanou,zhuangtai"
foreach ($line in $content -ne "active connections" -ne "  proto  local address          foreign address         state" -ne "活动连接" -ne "  协议  本地地址          外部地址        状态")
   {
   $liner $line.Replace("[::1]","local");
   $line $liner
   $liner $line.Replace("[::]","local");
   $line $liner
   $line $liner -replace("\s{1,}" ,",")
   $liner $line
   $line $liner -replace(":{1,}" ," ")
   $liner $line
   $liner $line.Replace(",TCP","TCP")
   $line $liner
   $liner $line.Replace(",UDP","UDP")
   $line $liner
   $line $liner -replace("\s{1,}" ,",")
   $liner $line
   $liner $line.Replace("127.0.0.1","local")
   $line $liner
   $liner $line.Replace("0.0.0.0","local")
   $line $liner
  <# $liner = $line.Replace("LISTENING","监听")
   $line = $liner
   $liner = $line.Replace("ESTABLISHED","等待")
   $line = $liner
   $liner = $line.Replace("TIME_WAIT","已建立连接")
   $line = $liner
   $liner = $line.Replace("CLOSE_WAIT","关闭等待")
   $line = $liner
   $liner = $line.Replace("SYN_SENT","同步发送")#>
   add-Content $files -Value $liner 
      
 
$files
$bb Import-Csv -Path d:\3456.csv 
echo "====================================="
echo "以下为协议计数"
$bbGroup-Object –Property:proto|select Name,Count|sort -Property count
echo "====================================="
echo "以下为您本地IP连接外端地址的统计数据"
$bbGroup-Object –Property:localAddress|select Name,Count|sort -Property count
echo "====================================="
echo "以下为外端地址连接您本地IP的统计数据"
$bbGroup-Object –Property:duiduanip|select Name,Count|sort -Property count
echo "====================================="
echo "以下为状态计数"
$bbGroup-Object –Property:zhuangtai|select Name,Count|sort -Property count


输出结果如下

PowerShell统计本地的网络连接(CMD吐数据互访)



本文转自 九叔 51CTO博客,原文链接:http://blog.51cto.com/jiushu/1663669,如需转载请自行联系原作者

相关文章:

  • 2021-11-23
  • 2021-09-03
  • 2021-06-12
  • 2021-11-27
  • 2021-04-21
  • 2022-12-23
  • 2021-07-13
  • 2021-11-06
猜你喜欢
  • 2021-03-28
  • 2021-09-30
  • 2021-11-12
  • 2022-12-23
  • 2022-12-23
相关资源
相似解决方案