我正在尝试这个小的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;
}
}
答案 0 :(得分:1)
Shay Levy编写了一个功能,可以使用netstat
信息来帮助您过滤信息并以更容易过滤的方式输出:How to find running processes and their port number
注意:我知道大多数人可能会说,如果页面丢失,请在此处发布代码。 Shay正在更新此页面,因为事情发生了变化或进行了改进(比如添加了对IPv6连接的支持),所以我怀疑他是否会很快将其删除。
> 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