跳转至

服务管理命令

概述

Windows服务是在后台运行的应用程序,可以自动启动、手动启动或禁用。服务管理是系统管理的重要部分。

sc命令

sc - 服务控制管理器

sc命令

与服务控制器和服务管理器通信的命令行程序,用于管理服务。

语法

Text Only
sc [server] [command] [service name] [option name= option value]

查询服务

Text Only
sc query [service name] [type= {service | driver | all}] [state= {active | inactive | all}] [bufsize= bufferSize] [ri= resumeIndex] [group= groupName]

示例

Text Only
1
2
3
4
5
sc query                          # 查询所有活动服务
sc query type= service state= all # 查询所有服务
sc query Spooler                  # 查询打印服务
sc query type= driver             # 查询驱动程序
sc query state= all bufsize= 3000 # 增加缓冲区大小

启动服务

Text Only
sc start [service name] [service arguments]

示例

Text Only
1
2
3
sc start Spooler                  # 启动打印服务
sc start wuauserv                 # 启动Windows更新服务
sc start "Windows Audio"          # 启动音频服务

停止服务

Text Only
sc stop [service name]

示例

Text Only
sc stop Spooler                   # 停止打印服务
sc stop wuauserv                  # 停止Windows更新服务

暂停和继续服务

Text Only
sc pause [service name]
sc continue [service name]

示例

Text Only
sc pause Spooler                  # 暂停打印服务
sc continue Spooler               # 继续打印服务

配置服务启动类型

Text Only
sc config [service name] [option name= option value]

启动类型选项: - start= demand:手动启动 - start= auto:自动启动 - start= disabled:禁用 - start= delayed-auto:延迟自动启动

注意

等号后面必须有一个空格。

示例

Text Only
1
2
3
4
sc config Spooler start= auto        # 设置自动启动
sc config Spooler start= demand      # 设置手动启动
sc config Spooler start= disabled    # 禁用服务
sc config Spooler start= delayed-auto # 延迟自动启动

查询服务配置

Text Only
sc qc [service name]

示例

Text Only
sc qc Spooler                     # 查询打印服务配置

创建服务

Text Only
sc create [service name] [binPath= path] [type= {own | share | kernel | filesys | rec | interact type= {own | share}}] [start= {demand | auto | disabled | delayed-auto}] [error= {normal | severe | critical | ignore}] [binPath= binaryPathName] [group= loadOrderGroup] [tag= {yes | no}] [depend= dependencies] [obj= {AccountName | LocalSystem}] [DisplayName= displayName] [password= password]

示例

Text Only
sc create MyService binPath= "C:\MyService\service.exe" start= auto DisplayName= "My Custom Service"

删除服务

Text Only
sc delete [service name]

示例

Text Only
sc delete MyService               # 删除服务

设置服务失败操作

Text Only
sc failure [service name] [reset= errorResetPeriod] [reboot= rebootMessage] [command= commandLine] [actions= failureActionsAndDelayTime]

失败操作: - restart:重启服务 - run:运行命令 - reboot:重启计算机

示例

Text Only
sc failure MyService reset= 86400 actions= restart/5000/restart/10000/restart/30000

net命令

net start - 启动服务

Text Only
net start [service name]

示例

Text Only
1
2
3
net start                         # 列出所有运行的服务
net start Spooler                 # 启动打印服务
net start "Windows Update"        # 启动Windows更新

net stop - 停止服务

Text Only
net stop [service name]

示例

Text Only
net stop Spooler                  # 停止打印服务
net stop "Windows Update"         # 停止Windows更新

net pause - 暂停服务

Text Only
net pause [service name]

net continue - 继续服务

Text Only
net continue [service name]

PowerShell服务管理

Get-Service - 获取服务

PowerShell
1
2
3
4
5
6
Get-Service                       # 所有服务
Get-Service -Name Spooler         # 指定服务
Get-Service | Where-Object {$_.Status -eq "Running"}  # 运行的服务
Get-Service | Where-Object {$_.Status -eq "Stopped"}  # 停止的服务
Get-Service | Where-Object {$_.StartType -eq "Automatic"}  # 自动启动的服务
Get-Service | Sort-Object Status  # 按状态排序

Start-Service - 启动服务

PowerShell
1
2
3
Start-Service -Name Spooler       # 启动服务
Start-Service -Name Spooler -Force # 强制启动
Get-Service -Name Spooler | Start-Service  # 管道方式

Stop-Service - 停止服务

PowerShell
Stop-Service -Name Spooler        # 停止服务
Stop-Service -Name Spooler -Force # 强制停止

Restart-Service - 重启服务

PowerShell
Restart-Service -Name Spooler     # 重启服务

Set-Service - 设置服务

PowerShell
1
2
3
4
Set-Service -Name Spooler -StartupType Automatic  # 自动启动
Set-Service -Name Spooler -StartupType Manual     # 手动启动
Set-Service -Name Spooler -StartupType Disabled   # 禁用
Set-Service -Name Spooler -DisplayName "Print Spooler"  # 设置显示名

New-Service - 创建服务

PowerShell
New-Service -Name "MyService" -BinaryPathName "C:\MyService\service.exe" -StartupType Automatic

Remove-Service - 删除服务

PowerShell
Remove-Service -Name "MyService"

wmic服务管理

wmic service - WMI服务查询

Text Only
1
2
3
4
wmic service list brief           # 简要列出所有服务
wmic service where "name='Spooler'" get name,state,startmode  # 查询服务状态
wmic service where "state='Running'" get name  # 运行的服务
wmic service where "startmode='Auto'" get name,state  # 自动启动的服务

启动和停止服务

Text Only
wmic service where "name='Spooler'" call startservice
wmic service where "name='Spooler'" call stopservice

修改服务启动类型

Text Only
1
2
3
wmic service where "name='Spooler'" call changeconfig(startmode="Automatic")
wmic service where "name='Spooler'" call changeconfig(startmode="Manual")
wmic service where "name='Spooler'" call changeconfig(startmode="Disabled")

常见Windows服务

系统核心服务

服务名 显示名 说明
EventLog Windows Event Log 事件日志服务
Spooler Print Spooler 打印服务
wuauserv Windows Update Windows更新
bits Background Intelligent Transfer Service 后台智能传输
winmgmt Windows Management Instrumentation WMI服务

网络服务

服务名 显示名 说明
LanmanServer Server 文件和打印共享
LanmanWorkstation Workstation 客户端网络连接
Dnscache DNS Client DNS客户端
Dhcp DHCP Client DHCP客户端
Tcpip TCP/IP NetBIOS Helper TCP/IP帮助服务

安全服务

服务名 显示名 说明
EventLog Windows Event Log 事件日志
wscsvc Security Center 安全中心
WinDefend Windows Defender Antivirus Windows Defender
Firewall Windows Firewall 防火墙

实用脚本

批量启动服务

Text Only
1
2
3
4
5
@echo off
sc start Spooler
sc start wuauserv
sc start bits
echo Services started

批量停止服务

Text Only
1
2
3
4
5
@echo off
sc stop Spooler
sc stop wuauserv
sc stop bits
echo Services stopped

检查服务状态

Text Only
1
2
3
4
5
6
7
8
@echo off
sc query Spooler | find "RUNNING"
if errorlevel 1 (
    echo Spooler is not running
    sc start Spooler
) else (
    echo Spooler is running
)

禁用不需要的服务

Text Only
1
2
3
4
5
@echo off
sc config "RemoteRegistry" start= disabled
sc config "TrkWks" start= disabled
sc config "WSearch" start= disabled
echo Services disabled

查看服务依赖关系

Text Only
sc qc Spooler | find "DEPEND"

PowerShell批量管理

PowerShell
# 停止所有非系统必需的服务
Get-Service | Where-Object {
    $_.Status -eq "Running" -and 
    $_.StartType -eq "Automatic" -and
    $_.Name -notin @('EventLog', 'PlugPlay', 'RpcSs', 'Winmgmt')
} | Stop-Service -Force

# 导出服务列表到CSV
Get-Service | Select-Object Name, DisplayName, Status, StartType | 
    Export-Csv -Path "services.csv" -NoTypeInformation

# 从CSV导入并设置服务
Import-Csv "services.csv" | ForEach-Object {
    Set-Service -Name $_.Name -StartupType $_.StartType
}

服务故障排查

查看服务事件日志

Text Only
# 查看系统事件日志中的服务事件
wevtutil qe System /q:"*[System[(EventID=7024 or EventID=7031 or EventID=7032 or EventID=7034)]]" /f:text

检查服务权限

Text Only
sc sdshow Spooler

恢复服务默认配置

PowerShell
# 重置服务启动类型为默认
Set-Service -Name Spooler -StartupType Automatic

参考资料