如何在PowerShell中仅显示netstat输出的本地地址与PID字段
PowerShell 提取netstat输出指定字段方案
调整后代码
方案1:输出结构化对象(方便后续进一步处理,比如筛选、导出)
netstat -ano | ForEach-Object { if ($_ -match '\s+(TCP|UDP)\s+(?<LocalAddr>\S+)\s+\S+\s+(?:\S+\s+)?(?<PID>\d+)$') { [PSCustomObject]@{ 'Local Address' = $matches.LocalAddr 'PID' = $matches.PID } } } | Format-Table -AutoSize
方案2:纯文本输出(适配原有字符串处理的使用习惯)
如果需要同时保留你之前把0.0.0.0:端口替换为纯端口的逻辑,可直接用以下代码:
(netstat -ano) -replace '^\s+\w+\s+(?:0\.0\.0\.0:)?(\S+)\s+\S+\s+(?:\S+\s+)?(\d+)$','$1 $2' | Where-Object { $_ -notmatch '^\s*$|Proto' }
代码说明
- 正则自动适配TCP(带状态列)、UDP(不带状态列)两种输出行格式,避免漏匹配
- 自动过滤原始输出的表头行和空行,输出内容仅包含需要的本地地址、PID两列
- 方案1输出为PowerShell对象,后续可直接加
| Where-Object PID -eq xxxx之类的逻辑做二次筛选,扩展性更强
内容的提问来源于stack exchange,提问作者Volkan
相关产品推荐
相关产品推荐

