我的会话中启动了一个notepad.exe:
gwmi -Query "Select CommandLine from Win32_Process where CommandLine='C:\Windows\system32\notepad.exe'"
给出
Get-WmiObject : Demande non valide
Au niveau de ligne : 1 Caractère : 5
+ gwmi <<<< -Query "Select CommandLine from Win32_Process where CommandLine='C:\Windows\system32\notepad.exe'"
+ CategoryInfo : InvalidOperation: (:) [Get-WmiObject], ManagementException
+ FullyQualifiedErrorId : GetWMIManagementException,Microsoft.PowerShell.Commands.GetWmiObjectCommand
我测试:
gwmi -Query "Select CommandLine from Win32_Process where CommandLine='C:\\Windows\\system32\\notepad.exe'"
它什么都没有
gwmi -Query "Select CommandLine from Win32_Process where CommandLine LIKE '%C:\\Windows\\system32\\notepad.exe%'"
完美运作
__GENUS : 2
__CLASS : Win32_Process
__SUPERCLASS :
__DYNASTY :
__RELPATH :
__PROPERTY_COUNT : 1
__DERIVATION : {}
__SERVER :
__NAMESPACE :
__PATH :
CommandLine : "C:\Windows\system32\notepad.exe"
也许PowerShell和WMI之间存在通配符问题,但任何人都可以帮助我使过滤器CommandLine='C:\Windows\system32\notepad.exe'
正常工作
答案 0 :(得分:1)
CommandLine属性的值包含引号,因此它们也需要进行转义。
一个有效但可怕的字符串是:
gwmi -Query "Select * from Win32_Process where CommandLine = '`"c:\\windows\\system32\\notepad.exe`"'"
答案 1 :(得分:0)
你需要包含引号,但由于我不记得如何在WQL中转义它们,我会在PSH中执行:
gwmi -class Win32_Process -filter "CommandLine like '`"C:\\Windows\\system32\\notepad.exe`"'"
过滤器表达式是双引号,字符串参数为LIKE
,单引号。作为该参数一部分的双引号需要引自PowerShell。
答案 2 :(得分:0)
Get-Process | ? {$_.Path -eq 'C:\Windows\system32\notepad.exe'}
Get-Process | ? {$_.processname -eq 'notepad'}