PowerShell 技能连载 - 更好的 NetStat(第 2 部分)
在上一个技巧中,我们介绍了 Get-NetTCPConnection
cmdlet,它是 Windows 系统上 netstat.exe 网络实用程序的更好替代方案。它可以列出打开的端口和连接,我们以列出所有与 HTTPS(端口443)的连接的示例作为总结:
1 | PS> Get-NetTCPConnection -RemotePort 443 -State Established |
该列表本身并不是很有用,因为它不能解析 IP 地址,也不会告诉您哪些程序保持着连接。但是,借助一点 PowerShell 魔术,您可以解决以下问题:
1 | $Process = @{ |
Select-Object
选择要显示的对象。它支持“计算属性”。 $Process
定义了一个名为 “Process
“ 的计算属性:它采用原始的 OwningProcess
属性,并通过 Get-Process
处理它的进程 ID,以获取应用程序的路径。
$HostName
中也会发生同样的情况:在此,用 .NET 的 GetHostEntry()
方法解析 IP 并返回解析的主机名。现在的结果如下所示:
Host OwningProcess Process
---- ------------- -------
13.107.6.171 9432 C:\Program Files (x86)\Microsoft Office\root\Office16\WINWORD.EXE
1drv.ms 9432 C:\Program Files (x86)\Microsoft Office\root\Office16\WINWORD.EXE
lb-140-82-113-26-iad.github.com 21588 C:\Program Files (x86)\Google\Chrome\Application\chrome.exe
1drv.ms 9432 C:\Program Files (x86)\Microsoft Office\root\Office16\WINWORD.EXE
52.113.206.137 13736 C:\Users\tobia\AppData\Local\Microsoft\Teams\current\Teams.exe
51.103.5.186 12752 C:\Users\tobia\AppData\Local\Microsoft\OneDrive\OneDrive.exe
不过这样做的成本可能很高,因为解析 IP 地址可能会花费很长时间,尤其是在查询超时时。在下一部分中,我们将介绍并行处理以加快处理速度。
PowerShell 技能连载 - 更好的 NetStat(第 2 部分)