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
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á
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 }"
Tags command-line