Windows services management with Powershell - makves-ru/makves GitHub Wiki

Потребуется:

  • Windows 7 и выше
  • права администратора

Статус службы на локальном компьютере.

Посмотреть статус всех запущенных служб на компьютере.

get-service

Каждая строка является объектом службы. И имеет свои свойства. Чтобы открыть их нужно передать эти объекты в команду Get-Member

get-service | get-member

Чтобы получить информацию об одной службе (например Windows Update):

get-service wuauserv | select Displayname,Status,Can*

Для вызова справочной информации:

help get-service

Полная справка:

help get-service -full

Статус службы на удаленном компьютере

Имея достаточные права, можно опросить сетевую машину без включения функции удаленного управления PowerShell

get-service spooler -ComputerName DESKTOP-TVIHAP8

Для запроса нескольких машин, перечислите их через запятую

Фильтрация служб

Фильтрация осуществляется с помощью командлета Where-Object (Сокращение Where).

Например чтобы получить все службы со статусом "остановлено"

get-service | where {$_.status -eq 'stopped'}

Чтобы получить информацию по одной службе (например wuauserv) на нескольких машинах. Вывод отформатируем в таблицу

get-service -computername @('DESKTOP-TVIHAP8','DESKTOP-TVIHAP8','DESKTOP-TVIHAP8') | where {$_.name -eq 'wuauserv'} | Format-Table Name,Status,Computername -autosize

Запрос отдельных служб с фильтрацией. Например все запущенные, начинающиеся на win службы на удаленной машине

get-service "win*" -comp DESKTOP-TVIHAP8 | where {$_.status -eq 'running'}

Можно сгруппировать по свойству статуса. Положим ее в переменную А.

$A = get-service -computername DESKTOP-TVIHAP8 | Group-Object -Property Status

Переменная $A является объектом GroupInfo

$A

Получилась коллекция связанных служб.

$A.Get(0).group