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

PowerShell使用WMI Query如何对Win32_Process的CommandLine做模糊匹配

问题根源是PowerShell双引号字符串的变量扩展机制,和WQL本身的语法无关:
WQL的LIKE运算符标准通配符确实是%,但你把WQL语句放在双引号中时,PowerShell会自动将形如%变量名%的内容识别为环境变量引用并尝试展开。如果你的设备上没有名为glassfish的环境变量,%glassfish%会被展开为空字符串,最终发给WMI服务的查询条件实际为CommandLine like '',自然匹配不到任何进程。

正确写法

下面两种写法都可以直接在WQL层面完成过滤,不需要额外加管道:

  • 用单引号包裹整个WQL语句,避免PowerShell解析内部的%字符:
Get-WmiObject -Query 'SELECT * FROM Win32_Process WHERE Name="java.exe" AND CommandLine LIKE "%glassfish%"'
  • 如果必须用双引号包裹WQL语句,用PowerShell转义符反引号()转义所有%`字符:
Get-WmiObject -Query "SELECT * FROM Win32_Process WHERE Name='java.exe' AND CommandLine LIKE `%glassfish`%"

补充:Get-WmiObject在PowerShell 3.0及以上版本已经被弃用,更推荐使用兼容更高系统的Get-CimInstance,查询语法完全一致:

Get-CimInstance -Query 'SELECT * FROM Win32_Process WHERE Name="java.exe" AND CommandLine LIKE "%glassfish%"'

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.02 03:15:02