Перечислите процессы PowerShell, у которых нет служб, и их PID - PullRequest
0 голосов
/ 02 мая 2018

Не могли бы вы помочь мне перечислить в PowerShell процессы, которые не имеют обслуживания, вместе с их PID?

Я не могу перечислить все эти процессы с N/A Сервисами, я пробовал некоторые команды, но безуспешно:

Get-process | where-services {$_.Status -eq "N/A"}
Get-process | sort-object {$_.Status -eq "N/A"}
tasklist /svc /FI "SERVICES ne N/A"
tasklist /v /FI "SERVICES ne N/A"

Спасибо,

1 Ответ

0 голосов
/ 02 мая 2018

К сожалению, Get-Service не возвращает информацию об идентификаторе процесса для процессов, запущенных службами. Однако вы можете получить эту информацию через класс WMI Win32_Service, который имеет свойство ProcessId:

$ServicePids = (Get-Wmiobject win32_service).ProcessId | Sort-Object -Unique
$ProcessPids = (Get-Process).Id | Sort-Object -Unique

$Pids = Compare-Object $ServicePids $ProcessPids -PassThru

Get-Process -Id $Pids | Select Name,Id

Вы можете получить Id процессов с помощью Get-Process, а затем использовать Compare-Object для их сравнения. Переключатель -Passthru возвращает только значения Pid (а не объект сравнения).

Я также использую Sort-Object -Unique, чтобы свести оба списка к отсортированным уникальным спискам, чтобы они правильно сравнивались.

Наконец, если вы хотите, чтобы вывод был похож на tasklist /svc, вы можете снова использовать Get-Process, чтобы вернуть объекты для результирующих идентификаторов, которые мы вернули в $Pids. Я использовал командлет Select, чтобы отфильтровать его только по полям «Имя» и «Идентификатор», но вы, очевидно, можете изменить его так, как вам нужно.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...