You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

PowerShell中netstat筛选LISTENING无结果,用*却返回所有结果?

问题根源

你第一个命令失效的核心原因:netstat是Windows原生系统命令,输出的是纯文本,而非PowerShell的结构化对象。当你用Where-Object {$_.State -eq "LISTENING"}时,你在尝试访问每个文本行的State属性——但字符串根本没有这个属性,$_.State会返回$null,$null和"LISTENING"的比较永远不成立,所以没有任何结果输出。

至于你第二个命令能返回所有结果,大概率是条件写法的巧合($null -eq "*"本身判断为假,但可能你实际执行时误写了逻辑,比如用了-like而非-eq),但这不是重点。

正确的过滤方法

要筛选处于LISTENING状态的连接条目,有两种靠谱的实现方式:

  • 直接匹配文本内容(简单直接):
    netstat -aon | Where-Object { $_ -match "\sLISTENING\s" }
    
  • 使用PowerShell原生命令(结构化处理,更灵活):
    放弃netstat,改用Get-NetTCPConnection命令,它直接返回结构化的TCP连接对象,支持通过属性精准过滤:
    Get-NetTCPConnection -State Listen | Select-Object LocalAddress, LocalPort, RemoteAddress, RemotePort, OwningProcess
    

内容的提问来源于stack exchange,提问作者Marstack01

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.25 19:27:22