множественные параметры в wmic пути win32_process get - PullRequest
1 голос
/ 11 июля 2019

Я хочу запустить эту команду wmic path Win32_Process get ParentProcessId, commandLine, creationdate, executablepath, name, processId с несколькими параметрами, но powershell ругается на синтаксис, если я пытаюсь писать через запятую.Что мне нужно исправить?

Ответы [ 2 ]

0 голосов
/ 11 июля 2019

Запятые указывают массивы.Если вы действительно хотите использовать wmic, вы можете использовать магический оператор «stop parsing»:

wmic --% path Win32_Process get ParentProcessId, commandLine, creationdate, executablepath, name, processId

Get-wmiobject или get-ciminstance будут выводить объекты, которыми легче манипулировать.Get-ciminstance даже имеет завершение табуляции для имен классов, и, отправляя по трубопроводу в select-object или where-object, вы получаете завершение табуляции в свойствах.

get-ciminstance win32_process | select parentprocessId, commandLine, creationdate, executablepath, name, processId
get-ciminstance win32_process | where commandline -match chrome
0 голосов
/ 11 июля 2019

По умолчанию командлеты / предоставляют все свойства класса для объекта, который вы получаете, поэтому вам не нужно указывать каждое из них:

$wmi = Get-WmiObject -Class Win32_Process
$wmi | Get-Member -MemberType Property

$props = 'ParentProcessId', 'CommandLine', 'CreationDate', 'ExecutablePath', 'Name', 'ProcessId'
$wmi | Select-Object -Property $props

В качестве лучшей практики: если дает вам нативную абстракцию (в данном случае Get-WmiObject или Get-CimInstance), вы должны использовать ее!

...