Windows CLI: “Se o serviço não estiver em execução, inicie o serviço”

4

Eu preciso executar uma verificação de linha de comando para ver se um serviço está parado e, se estiver, inicie-o. Eu não posso apenas iniciá-lo porque então eu recebo um código de resultado ruim e a sequência de tarefas do SCCM eu preciso dele para falhar.

Aqui está o que eu pensei que deveria ter feito o truque, mas não o fez:

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

O erro que recebo é: a consulta foi inesperada no momento.

Eu gostaria de fazer isso em uma única linha.

Obrigado já

    
por HannesFostie 25.10.2010 / 11:27

2 respostas

4

Não sei se você consideraria essa linha como ela usa o & personagem, mas o que dizer:

sc query bits | find "RUNNING" & if errorlevel 1 sc start bits
    
por 25.10.2010 / 12:08
1

Se você estiver disposto a usar o PowerShell, poderá fazer isso:

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

Você precisa apenas passar o nome do serviço, não o nome para exibição, ao comando where-object. Você pode ver os dois nomes na página propery do serviço.

EDITAR:

Se você quiser um liner em cmd, você pode incorporar o liner powershell em um liner liner:

powershell -Command "& {Get-Service | Where-Object {$_.status -eq \"stopped\" -and $_.name -eq \"MySvcName\"} | Start-Service }"
    
por 25.10.2010 / 14:40