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

使用Get-CimInstance的Filter参数按Name过滤Win32_Product报错,如何解决?

解决Get-CimInstance Filter参数的"Invalid query"错误

你的问题出在混淆了PowerShell自身的通配符规则和WQL(Windows Management Query Language)的语法要求,这是用CIM查询时很容易踩的坑!

错误原因拆解

  1. 你用了PowerShell的通配符*,但WQL里的通配符是%(对应PowerShell的*),单个字符匹配用_(对应PowerShell的?)
  2. Filter参数需要的是完整的WQL WHERE子句条件,你只写了"Microsoft*",缺少了属性名和LIKE运算符,不符合WQL的查询语法

正确的命令写法

要实现和管道版本完全一致的效果,且不使用管道,把Filter参数改成标准的WQL条件即可:

Get-CimInstance -ClassName Win32_Product -Property Name -Filter "Name LIKE 'Microsoft%'"

额外小提示

  • 注意Filter里的匹配字符串要用单引号包裹,这样可以避免PowerShell解析双引号里的内容时出现意外
  • 另外提个最佳实践:Win32_Product类在调用时会触发MSI的一致性检查,可能导致系统短暂卡顿甚至触发不必要的安装修复动作。如果是生产环境或者频繁查询的场景,更推荐通过查询注册表路径HKLM:\Software\Microsoft\Windows\CurrentVersion\Uninstall(或64位系统的HKLM:\Software\Wow6432Node\Microsoft\Windows\CurrentVersion\Uninstall)来获取已安装软件信息,效率更高也更安全。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.25 06:36:23