服务管理命令
概述
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 |
|---|
| 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 |
|---|
| sc start Spooler # 启动打印服务
sc start wuauserv # 启动Windows更新服务
sc start "Windows Audio" # 启动音频服务
|
停止服务
示例:
| 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 |
|---|
| sc config Spooler start= auto # 设置自动启动
sc config Spooler start= demand # 设置手动启动
sc config Spooler start= disabled # 禁用服务
sc config Spooler start= delayed-auto # 延迟自动启动
|
查询服务配置
示例:
创建服务
| 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 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 # 列出所有运行的服务
net start Spooler # 启动打印服务
net start "Windows Update" # 启动Windows更新
|
net stop - 停止服务
示例:
| Text Only |
|---|
| net stop Spooler # 停止打印服务
net stop "Windows Update" # 停止Windows更新
|
net pause - 暂停服务
net continue - 继续服务
| Text Only |
|---|
| net continue [service name]
|
PowerShell服务管理
Get-Service - 获取服务
| PowerShell |
|---|
| 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 |
|---|
| 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 |
|---|
| 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 |
|---|
| 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 |
|---|
| 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 |
|---|
| @echo off
sc start Spooler
sc start wuauserv
sc start bits
echo Services started
|
批量停止服务
| Text Only |
|---|
| @echo off
sc stop Spooler
sc stop wuauserv
sc stop bits
echo Services stopped
|
检查服务状态
| Text Only |
|---|
| @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 |
|---|
| @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
|
检查服务权限
恢复服务默认配置
| PowerShell |
|---|
| # 重置服务启动类型为默认
Set-Service -Name Spooler -StartupType Automatic
|
参考资料