Get-WmiObject中AND与OR逻辑运算符行为反向问题咨询
我确实碰到过其他用户反馈这个诡异的问题——在使用Get-WmiObject查询Win32_Share类时,WQL过滤器里的AND和OR运算符完全反向:本该是“且”的逻辑变成了“或”,“或”的逻辑变成了“且”。
可能的场景和验证点
- 首先排除语法错误:很多时候逻辑混乱是因为条件分组的括号没加对,比如混合使用
AND和OR时没有明确优先级,导致结果不符合预期。可以先测试最简单的单条件+运算符组合,比如:
如果这个命令返回了所有Type=0的共享或者所有Name='C$'的共享,那确实是运算符逻辑反向的问题。# 预期返回类型为0(磁盘共享)且名称为C$的共享 Get-WmiObject -Class Win32_Share -Filter "Type=0 AND Name='C$'" - 这个异常更多出现在较老的Windows系统中,比如Windows 7或Server 2008 R2,偶尔也会在WMI服务出现异常的新系统上发生。
解决或验证的方法
- 切换到CIM cmdlet:微软早已推荐用
Get-CimInstance替代Get-WmiObject,CIM的查询引擎更稳定,试试这个命令看逻辑是否正常:Get-CimInstance -Class Win32_Share -Filter "Type=0 AND Name='C$'" - 修复WMI存储库:如果是WMI服务本身的问题,可以尝试重置WMI存储库(注意:操作前备份重要数据,部分依赖WMI的服务可能需要重启):
winmgmt /resetrepository
内容的提问来源于stack exchange,提问作者Chris
相关产品推荐
相关产品推荐

