Проверка только «автоматических» сервисов с powershell - PullRequest
2 голосов
/ 07 мая 2010

Я видел множество сценариев для ручной остановки / запуска служб в списке, но как я могу сгенерировать этот список программно из-только автоматических служб. Я хочу написать сценарий для некоторых перезагрузок и ищу способ убедиться, что все на самом деле правильно запускается для любых служб, которые должны были.

1 Ответ

11 голосов
/ 07 мая 2010

Get-Service возвращает System.ServiceProcess.ServiceController объекты, которые не предоставляют эту информацию.Таким образом, вы должны использовать WMI для такого рода задач: Get-WmiObject Win32_Service.Пример, который показывает требуемый StartMode и форматирует вывод в виде панели управления Windows:

Get-WmiObject Win32_Service |
Format-Table -AutoSize @(
    'Name'
    'DisplayName'
    @{ Expression = 'State'; Width = 9 }
    @{ Expression = 'StartMode'; Width = 9 }
    'StartName'
)

Вам интересны службы, которые работают автоматически, но не работают:

# get Auto that not Running:
Get-WmiObject Win32_Service |
Where-Object { $_.StartMode -eq 'Auto' -and $_.State -ne 'Running' } |
# process them; in this example we just show them:
Format-Table -AutoSize @(
    'Name'
    'DisplayName'
    @{ Expression = 'State'; Width = 9 }
    @{ Expression = 'StartMode'; Width = 9 }
    'StartName'
)
...