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

批处理中使用PowerShell Get-WmiObject通配符查询远程应用版本失败

批处理中嵌入PowerShell查询远程应用版本的修正方案

问题根源

批处理与PowerShell的引号解析规则存在差异,原命令未正确包裹PowerShell查询语句,导致*被识别为独立的位置参数,触发"找不到接受参数'*'的位置参数"错误。

修正后的批处理命令

以下两种写法均可正常运行:

写法1:转义双引号包裹查询语句

Powershell.exe -Command "Get-WmiObject -ComputerName %CN% -Query \"Select * From Win32_Product Where name Like 'McAfee%'\" | Select-Object Name, Version" >>%LOG%

写法2:用单引号包裹查询语句(内部单引号双写转义)

Powershell.exe -Command "Get-WmiObject -ComputerName %CN% -Query 'Select * From Win32_Product Where name Like ''McAfee%''' | Select-Object Name, Version" >>%LOG%

关键修正点

  • 必须添加-Command参数,明确告知PowerShell执行的是完整命令字符串
  • 确保-Query参数的查询语句被完整包裹,避免批处理拆分参数
  • 推荐使用Select-Object替代简写的select,提升命令兼容性

更优替代方案(推荐)

由于Get-WmiObject已被PowerShell弃用,建议改用Get-CimInstance,命令如下:

Powershell.exe -Command "Get-CimInstance -ComputerName %CN% -Query \"Select * From Win32_Product Where name Like 'McAfee%'\" | Select-Object Name, Version" >>%LOG%

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.14 05:10:21