Windows CLI:“如果服务未运行,请启动服务”

Windows CLI:“如果服务未运行,请启动服务”

我需要运行命令行检查以查看服务是否已停止,如果已停止,则启动它。我无法直接启动它,因为这样我会得到错误的结果代码,并且我需要它的 SCCM 任务序列会失败。

以下是我认为应该能起到作用但却没有起到作用的方法:

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

我收到的错误是:此时查询是意外的。

我想用一行来完成这个任务。

已经谢谢了

答案1

不知道您是否会考虑这一行,因为它使用了 & 字符,但是:

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

答案2

如果您愿意使用 PowerShell,您可以这样做:

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

您只需确保将服务名称(而不是显示名称)传递给 where-object 命令即可。您可以在服务属性页面上看到这两个名称。

编辑:

如果您想要 cmd 中的单行程序,则可以将 powershell 单行程序嵌入 cmd 单行程序中:

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

相关内容