![从命令提示符显示 Windows 服务的状态](https://linux22.com/image/676517/%E4%BB%8E%E5%91%BD%E4%BB%A4%E6%8F%90%E7%A4%BA%E7%AC%A6%E6%98%BE%E7%A4%BA%20Windows%20%E6%9C%8D%E5%8A%A1%E7%9A%84%E7%8A%B6%E6%80%81.png)
是否有任何 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
如果你愿意使用优秀的Cygwin
bash,你可以简单地写:
sc query "Bonjour Service" |grep -qo RUNNING && echo "Bonjour is ok!" || echo "Apple Bonjour Service not running"
这里的诀窍是有一个适当的grep
可用,这样您就可以捕捉命令的真/假(成功)状态。这里-q
是静默的,-o
只是返回精确匹配,可能可以省略。是的,您需要将“sc.exe”放入您的 PATH 中。