4

Мне нужно запустить проверку командной строки, чтобы увидеть, если служба остановлена, и если это так, запустите его. Я не могу просто запустить его, потому что тогда я получаю неверный код результата и последовательность задач SCCM, которая мне нужна для ошибок.

Вот то, что я думал, должно было сделать трюк, но не сделал:

IF NOT ('sc query "bits"^| find "RUNNING"')=="" sc start "bits"

Ошибка, которую я получаю: запрос был неожиданным в это время.

Я хотел бы сделать это в одной строке.

Уже спасибо

2 ответа2

4

Не знаю, считаете ли вы эту строку одной строкой, так как она использует символ &, но как насчет:

sc query bits | find "RUNNING" & if errorlevel 1 sc start bits
1

Если вы хотите использовать PowerShell, вы можете сделать это:

Get-Service | Where-Object {$_.status -eq "stopped" -and $_.name -eq "MySvcName"} | Start-Service

Вам просто нужно передать имя службы, а не отображаемое имя, команде where-object. Вы можете увидеть два названия на странице свойств сервиса.

РЕДАКТИРОВАТЬ:

Если вам нужен однострочный файл в cmd, вы можете встроить PowerShell один лайнер в cmd one:

powershell -Command "& {Get-Service | Where-Object {$_.status -eq \"stopped\" -and $_.name -eq \"MySvcName\"} | Start-Service }"

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