PowerShell – проверка статусов Windows сервисов
Конечно же это будет командлет Get-Service, для начала можно собрать всю информацию о сервисах в файл:
1 |
Get-Service | Out-File "C:\tmp\Services.txt" |
Можно запросит информацию об известных сервисах, например служб связанных с обновлениями:
1 |
get-service bits, wuauserv |
Или посмотреть свдеения о только запущенных службах:
1 |
Get-Service | Where-Object {$_.Status -EQ "Running"} |
Можно посмотреть требуемые серввисы:
1 |
Get-Service -Name LanmanWorkstation –RequiredServices |
Или зависимости:
1 |
Get-Service -Name LanmanWorkstation -DependentServices |
Можно просмотреть все существующие свойства сервсиов:
1 |
get-service | get-member |
Или выбрать только нужные:
1 |
get-service wuauserv | select Displayname,Status,ServiceName,Can* |
Можно выбрать сервисы которые могут быть поставлены на паузу и быть запущены после рестарта:
1 |
Get-Service | Where-Object {$_.canpauseandcontinue -eq "True"} |
Можно посмотреть типы запусков служб:
1 |
Get-Service | select -property name,starttype |
Можно отфильтровать по первым буквам в названии сервиса:
1 |
get-service wi* |
Или исключить что-то из филтра:
1 |
Get-Service -Name "wi*" -Exclude "WinRM" |
Если включен WinRM, то можно сделать все то-же самое на удаленной машине:
1 |
get-service wuauserv -ComputerName Server01 |
Или машинах:
1 |
get-service spooler -ComputerName Server01,Server02,Server03 | format-table Name,Status,Machinename –autosize |
Можно подтянуть список из файла:
1 |
Get-Service -Computername (Get-Content -path “c:\tmp\servers.txt”) -Name spooler | Select-Object MachineName,Name,Displayname,Status | Sort-Object Status |
Можно оной командой запустить например все зависимые сервисы:
1 |
get-service servicename | Foreach { start-service $_.name -passthru; start-service $_.DependentServices -passthru} |
Массово проверить сервис на машинах из скрипта:
1 2 3 4 5 6 7 8 9 10 11 |
$servicename = "ServiceName" $list = get-content “c:\tm\servers.txt” foreach ($server in $list) { if (Get-Service $servicename -computername $server -ErrorAction 'SilentlyContinue'){ Write-Host "$servicename exists on $server " } else{ write-host "No service $servicename found on $server." } } |