Powershell - 捕获套接字和进程

时间:2012-08-12 00:02:25

标签: windows powershell

我正在尝试这个小的PowerShell脚本每五秒查找一次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;
  }
}

1 个答案:

答案 0 :(得分:1)

Shay Levy编写了一个功能,可以使用netstat信息来帮助您过滤信息并以更容易过滤的方式输出:How to find running processes and their port number

注意:我知道大多数人可能会说,如果页面丢失,请在此处发布代码。 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