Поэтому, если служба имеет тип запуска "Автоматический" или "Ручной", но в настоящее время остановлена, я хотел бы запустить команду, чтобы увидеть эти проблемы.

В PowerShell и CMD я могу видеть одно ИЛИ другое, но я не могу найти простой способ отфильтровать данные к тому, что мне нужно.

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

Проблема, с которой я сталкиваюсь, заключается в том, что PowerShell или CMD не допускают глубокого фильтрации или передачи результатов. У кого-нибудь есть способ помочь мне понять это?

Как я могу решить эту проблему?

2 ответа2

1

Посмотрев на этот вопрос, вы можете придумать это для старых версий PowerShell:

Get-WmiObject -Class Win32_Service | Select-Object Name,State,StartMode | Where-Object {$_.State -ne "Running" -and $_.StartMode -eq "Auto"}

С более новыми версиями (по крайней мере, 5 или 3/4) вы также можете использовать (что было предложено JC2k8):

Get-Service | Select-Object -Property Name,Status,StartType | Where-Object {$_.Status -eq "Stopped" -and $_.StartType -eq "Automatic"}

В старых версиях PowerShell командлет Get-Service не предлагал члена с StartType .

PowerShell поддерживает множество фильтров и конвейеров. :)

1
(get-service|?{ $_.Status -eq "Stopped" -and $_.StartType -eq "Automatic"})|
select DisplayName, StartType, Status

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .