从命令提示符显示 Windows 服务的状态

从命令提示符显示 Windows 服务的状态

是否有任何 Windows 命令可以显示单个服务的状态?

例如,我想知道“IIS 管理服务”是否正在运行。如果正在运行,则命令输出应为“正在运行”。

我尝试sc query type= service state= all | find "IIS Admin Service"显示输出:

“DISPLAY_NAME:IIS 管理服务”

我也尝试过net start "IIS Admin Service" | find "Running"显示:

请求的服务已启动。

输入 NET HELPMSG 2182 即可获得更多帮助。

但它并没有给我这样的输出

“服务名称” = 正在运行 / 已禁用 / 已停止

是否有以这种格式输出的命令?

答案1

使用服务名称而不是显示名称

sc query iisadmin

答案2

您可以这样使用 Powershell:

Get-Service -name 'IIS Admin Service'

答案3

这很好用:

sc query "service name" | FIND /C "RUNNING"

如果服务正在运行,则 %ERRORLEVEL% 为 0;如果服务未运行,则为 1。无需第三方工具。

要捕获 FIND 的输出,你可以使用如下方法:

sc query "service name" | FIND /C "RUNNING" >NUL && echo Service is running || echo Service is stopped

答案4

如果你愿意使用优秀的Cygwinbash,你可以简单地写:

sc query "Bonjour Service" |grep -qo RUNNING && echo "Bonjour is ok!" || echo "Apple Bonjour Service not running"

这里的诀窍是有一个适当的grep可用,这样您就可以捕捉命令的真/假(成功)状态。这里-q是静默的,-o只是返回精确匹配,可能可以省略。是的,您需要将“sc.exe”放入您的 PATH 中。

相关内容