首页/系统/Windows 运维速查/Where-Object 语义陷阱
PowerShell 基础66 条

Where-Object 语义陷阱

过滤逻辑写错是脚本结果异常的高频来源:理解比较运算符、通配与数组语义的差异,避免“看起来对”的筛选。

Windows 运维速查系统更新于 2026-10-12
要点区分 -eq 与 -like/-match;比较运算会作用于集合
典型陷阱1,2,3 -eq 2 返回 2 而不是布尔值;-like 用通配符、-match 用正则

常用示例

常用示例
1,2,3 -eq 2
Get-Service | Where-Object Name -in 'Spooler','wuauserv'
Get-ChildItem | Where-Object Extension -in .log,.txt
需要区分大小写用 -ceq/-clike;-in 表示“值在集合中”,语义比多个 -or 更清晰。

易错点

  • 对集合使用 -eq 返回的是匹配元素集合,不能当布尔条件用
  • 判断空值用 $null -eq $x 的写法,反写在数组场景容易误判

数据来源与参考

  • Microsoft Learn:about_Comparison_Operators

相关工具

​‌‌​​‌​​​‌‌​‌‌‌‌​‌‌​​​‌‌​‌‌‌​​‌‌​​‌​‌‌‌​​‌‌‌​​​‌​‌‌​‌​​‌​‌‌‌​​​‌​‌‌​‌​​‌​‌‌​​​‌‌​‌‌‌​‌​​​‌‌​‌‌‌‌​​‌​‌‌‌​​‌‌​​​‌‌​‌‌​‌‌‌‌​‌‌​‌‌​‌