如何通过PowerShell精确调整并查询本地Windows服务的启动类型和运行状态?
- 内容介绍
- 文章标签
- 相关推荐
本文共计749个文字,预计阅读时间需要3分钟。
相关专题
powershell 是管理 windows 服务最直接、高效的工具之一,无需图形界面即可查看、启停、设置启动类型(自动/手动/禁用)等操作。关键在于掌握几个核心 cmdlet 及其常用参数组合。
查看服务状态和启动类型
用 Get-Service 获取服务基本信息,配合 Get-CimInstance 或 Get-WmiObject(旧系统)读取更底层的启动配置(如 StartupType):
- Get-Service wuauserv — 查看 Windows Update 服务当前运行状态(Running / Stopped)
- Get-CimInstance -ClassName Win32_Service -Filter "Name='wuauserv'" | Select Name, State, StartMode — 显示服务名、当前状态(State)和启动模式(StartMode:Auto / Manual / Disabled)
- Get-Service | Where-Object {$_.Status -eq 'Running'} — 筛选所有正在运行的服务
启动、停止或重启服务
使用 Start-Service、Stop-Service、Restart-Service,支持名称、显示名或管道输入:
- Start-Service -Name "wuauserv" — 启动指定服务(需管理员权限)
- Stop-Service -DisplayName "Windows Update" — 停止服务(DisplayName 更易识别)
- Get-Service bits | Restart-Service -Force — 强制重启(跳过确认,适用于已停止但依赖项未清理的情况)
修改服务启动类型(Startup Type)
启动类型决定服务开机是否自动加载,必须用 Set-Service 设置,且仅支持三个值:Automatic、Manual、Disabled:
- Set-Service -Name "wuauserv" -StartupType Automatic — 设为自动启动(延迟启动需额外配置,不在此命令中)
- Set-Service -Name "SysMain" -StartupType Disabled — 禁用 Superfetch(SysMain)服务
- 注意:修改后不会立即启停服务,仅改变注册表中的配置;若要同步生效,需搭配 Start-Service 或 Stop-Service 手动触发
批量操作与脚本化建议
对多个服务统一处理时,推荐用数组+管道方式,避免重复命令:
- $services = 'wuauserv', 'bits', 'appidsvc'; $services | ForEach-Object { Set-Service $_ -StartupType Manual }
- 检查服务是否存在再操作,防止报错:if (Get-Service 'wuauserv' -ErrorAction SilentlyContinue) { Restart-Service wuauserv }
- 导出当前服务清单到 CSV:Get-CimInstance Win32_Service | Select Name, DisplayName, State, StartMode | Export-Csv .\services.csv -NoTypeInformation
所有涉及启停或修改启动类型的命令均需以管理员身份运行 PowerShell。服务名(Name)区分大小写不敏感,但建议按 Get-Service 输出的标准小写形式使用,避免歧义。
本文共计749个文字,预计阅读时间需要3分钟。
相关专题
powershell 是管理 windows 服务最直接、高效的工具之一,无需图形界面即可查看、启停、设置启动类型(自动/手动/禁用)等操作。关键在于掌握几个核心 cmdlet 及其常用参数组合。
查看服务状态和启动类型
用 Get-Service 获取服务基本信息,配合 Get-CimInstance 或 Get-WmiObject(旧系统)读取更底层的启动配置(如 StartupType):
- Get-Service wuauserv — 查看 Windows Update 服务当前运行状态(Running / Stopped)
- Get-CimInstance -ClassName Win32_Service -Filter "Name='wuauserv'" | Select Name, State, StartMode — 显示服务名、当前状态(State)和启动模式(StartMode:Auto / Manual / Disabled)
- Get-Service | Where-Object {$_.Status -eq 'Running'} — 筛选所有正在运行的服务
启动、停止或重启服务
使用 Start-Service、Stop-Service、Restart-Service,支持名称、显示名或管道输入:
- Start-Service -Name "wuauserv" — 启动指定服务(需管理员权限)
- Stop-Service -DisplayName "Windows Update" — 停止服务(DisplayName 更易识别)
- Get-Service bits | Restart-Service -Force — 强制重启(跳过确认,适用于已停止但依赖项未清理的情况)
修改服务启动类型(Startup Type)
启动类型决定服务开机是否自动加载,必须用 Set-Service 设置,且仅支持三个值:Automatic、Manual、Disabled:
- Set-Service -Name "wuauserv" -StartupType Automatic — 设为自动启动(延迟启动需额外配置,不在此命令中)
- Set-Service -Name "SysMain" -StartupType Disabled — 禁用 Superfetch(SysMain)服务
- 注意:修改后不会立即启停服务,仅改变注册表中的配置;若要同步生效,需搭配 Start-Service 或 Stop-Service 手动触发
批量操作与脚本化建议
对多个服务统一处理时,推荐用数组+管道方式,避免重复命令:
- $services = 'wuauserv', 'bits', 'appidsvc'; $services | ForEach-Object { Set-Service $_ -StartupType Manual }
- 检查服务是否存在再操作,防止报错:if (Get-Service 'wuauserv' -ErrorAction SilentlyContinue) { Restart-Service wuauserv }
- 导出当前服务清单到 CSV:Get-CimInstance Win32_Service | Select Name, DisplayName, State, StartMode | Export-Csv .\services.csv -NoTypeInformation
所有涉及启停或修改启动类型的命令均需以管理员身份运行 PowerShell。服务名(Name)区分大小写不敏感,但建议按 Get-Service 输出的标准小写形式使用,避免歧义。

