Проблема с фильтром WMI - PullRequest
       23

Проблема с фильтром WMI

2 голосов
/ 06 октября 2011

В моем сеансе запущен 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' работать

Ответы [ 3 ]

1 голос
/ 06 октября 2011

Значение свойства CommandLine содержит кавычки, поэтому их также необходимо экранировать.

Рабочая, но ужасная строка:

gwmi -Query "Select * from Win32_Process where CommandLine = '`"c:\\windows\\system32\\notepad.exe`"'"
0 голосов
/ 12 октября 2011
Get-Process | ? {$_.Path -eq 'C:\Windows\system32\notepad.exe'}</code>

<code>Get-Process | ? {$_.processname -eq 'notepad'}
0 голосов
/ 06 октября 2011

Вы должны включить кавычки, но поскольку я не могу вспомнить, как их избежать в WQL, я бы сделал это в PSH:

gwmi -class Win32_Process -filter "CommandLine like '`"C:\\Windows\\system32\\notepad.exe`"'"

Выражение фильтра в двойных кавычках со строкойаргумент LIKE в одинарных кавычках.Двойные кавычки, являющиеся частью этого аргумента, должны быть заключены в PowerShell.

...