首页/系统/Windows 运维速查/sc query 查询服务状态

sc query 查询服务状态

查询单个或全部服务状态:运行状态与退出码,排查服务问题的第一命令。

Windows 运维速查系统更新于 2026-10-13

sc query 是什么

sc 是与服务控制管理器通信的命令行工具,用来查询和控制 Windows 服务的状态。查询类用法最常用:给出服务短名,输出当前状态、进程编号与退出码;也可以按条件列举全部服务。它的输出字段固定,退出码字段能直接反映服务上一次启动或运行的结果,所以排查「服务起不来」时,先跑一次查询往往就能把范围缩小到具体原因。注意在 PowerShell 会话里 sc 是另一个命令的别名,必须写 sc.exe 才能调用系统程序。

基本信息

适用平台Windows(sc.exe 系统自带,全版本可用)
语法sc query <服务名>;sc query type= service state= all;sc qc <服务名>
参数格式等号后面必须紧跟空格再写值,例如 type= service;写成等号紧贴值会报参数错误
服务名要求使用短名(如 Spooler、wuauserv),不能用中文显示名
权限查询普通用户即可;启动、停止、删除服务需要管理员
PowerShell 注意会话中的 sc 是别名,脚本里应写成 sc.exe

典型使用场景

  • 快速确认某个服务的当前状态与启动类型
  • 在无图形界面的服务器上批量列出服务及其状态
  • 读取退出码判断上一次启动为何失败
  • 查看服务配置:可执行文件路径、启动账户、依赖关系
  • 在批处理脚本里按状态做条件分支,决定是否启动服务
  • 服务异常时先记录状态快照,再动手处理,便于事后对比

常用示例

常用示例
:: 查询单个服务的状态(使用短名)
sc query Spooler
:: 查询并查看配置:路径、账户、启动类型
sc qc Spooler
:: 列出所有服务及其状态
sc query type= service state= all
:: 只列正在运行的服务
sc query type= service state= running
:: 启动与停止(需管理员)
sc start Spooler
sc stop Spooler
:: PowerShell 中必须写全名
sc.exe query Spooler

输出字段读法

字段含义异常判断
SERVICE_NAME服务短名与预期不符说明查错了目标
DISPLAY_NAME本地化显示名查询时不能用它代替短名
STATE当前状态与附加状态STOPPED 与预期不符即定位到服务未起
WIN32_EXIT_CODE上一次退出码非零表示上次异常结束,需要结合日志分析
SERVICE_EXIT_CODE服务自身定义的退出码由程序自己写入,含义看厂商文档
CHECKPOINT 与 WAIT_HINT启动或停止的进度提示长时间停在同一数值常表示启动超时
参数里的等号写法容易踩坑:正确写法是 type= service,等号与值之间必须留空格;等号紧贴值会被当成未识别参数,报错信息还比较含糊。
在 PowerShell 里敲 sc 得到的是别的命令,输出与预期完全不同。脚本中统一写 sc.exe,可以避免因为会话环境不同而出现两种行为。

易错点

  • 用显示名查询服务:sc 只认短名,中文显示名会提示服务不存在,需要先用服务管理器或注册表查到短名
  • 参数等号紧贴取值:type=service 这类写法会被判为参数错误,正确格式是等号后留空格
  • 忽略退出码:STATE 显示已停止只是结果,WIN32_EXIT_CODE 才是原因线索,非零时要去事件日志找对应记录
  • 在 PowerShell 中直接使用 sc:命中的是别名而非系统程序,脚本行为与手工执行不一致
  • 用 sc 做删除类操作而不确认:删除服务是不可逆的,动手前先导出配置或确认可重建

数据来源与参考

  • Microsoft Learn:sc query

相关工具

​‌‌​​‌​​​‌‌​‌‌‌‌​‌‌​​​‌‌​‌‌‌​​‌‌​​‌​‌‌‌​​‌‌‌​​​‌​‌‌​‌​​‌​‌‌‌​​​‌​‌‌​‌​​‌​‌‌​​​‌‌​‌‌‌​‌​​​‌‌​‌‌‌‌​​‌​‌‌‌​​‌‌​​​‌‌​‌‌​‌‌‌‌​‌‌​‌‌​‌