Поиск услуг и процессов - PullRequest
0 голосов
/ 09 мая 2018

Добрый день,

Я ищу здесь помощь, так как исчерпал все ресурсы. Похоже, что мои навыки PowerShell не помогают мне в этом деле.

Мне нужно выполнить четыре задания следующим образом:

  1. Список запущенных процессов.
  2. Список запущенных служб и их PID.
  3. Для каждого найденного процесса проверьте, есть ли служба, и перечислите службы и PID.
  4. Список процессов, у которых нет служб, и их PID.

Для 1 и 2 довольно просто, я использовал:

  1. get-process
  2. get-wmiobject -class Win32_process | select Name, ProcessID

Сложность в 3 и 4, так как я не знаю, как связать запущенные процессы с их существующими / несуществующими сервисами.

Заранее спасибо за любую помощь, совет или код.

1 Ответ

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

Возможно что-то типа:

$processes = Get-Process
$services = Get-WmiObject Win32_Service
foreach ( $process in $processes ) {
  if ( $process.Id -eq 0 ) {
    continue
  }
  $service = $services | Where-Object { $_.ProcessId -eq $process.Id }
  if ( $service ) {
    $isService = $true
    $serviceNames = $service.Name -as [Array]
  }
  else {
    $isService = $false
    $serviceNames = @($null)
  }
  foreach ( $serviceName in $serviceNames ) {
    [PSCustomObject] @{
      "ProcessId"   = $process.Id
      "ProcessName" = $process.Name
      "Service"     = $isService
      "ServiceName" = $serviceName
    }
  }
}

(Возможно, есть более быстрые способы, но это должно дать вам представление.)

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