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
