如何通过PowerShell精确调整并查询本地Windows服务的启动类型和运行状态?

2026-04-27 22:211阅读0评论SEO资源
  • 内容介绍
  • 文章标签
  • 相关推荐

本文共计749个文字,预计阅读时间需要3分钟。

如何通过PowerShell精确调整并查询本地Windows服务的启动类型和运行状态?

相关专题

powershell 是管理 windows 服务最直接、高效的工具之一,无需图形界面即可查看、启停、设置启动类型(自动/手动/禁用)等操作。关键在于掌握几个核心 cmdlet 及其常用参数组合。

查看服务状态和启动类型

Get-Service 获取服务基本信息,配合 Get-CimInstanceGet-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-ServiceStop-ServiceRestart-Service,支持名称、显示名或管道输入:

  • Start-Service -Name "wuauserv" — 启动指定服务(需管理员权限)
  • Stop-Service -DisplayName "Windows Update" — 停止服务(DisplayName 更易识别)
  • Get-Service bits | Restart-Service -Force — 强制重启(跳过确认,适用于已停止但依赖项未清理的情况)

修改服务启动类型(Startup Type)

启动类型决定服务开机是否自动加载,必须用 Set-Service 设置,且仅支持三个值:AutomaticManualDisabled

  • 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 输出的标准小写形式使用,避免歧义。

标签:Windowswin

本文共计749个文字,预计阅读时间需要3分钟。

如何通过PowerShell精确调整并查询本地Windows服务的启动类型和运行状态?

相关专题

powershell 是管理 windows 服务最直接、高效的工具之一,无需图形界面即可查看、启停、设置启动类型(自动/手动/禁用)等操作。关键在于掌握几个核心 cmdlet 及其常用参数组合。

查看服务状态和启动类型

Get-Service 获取服务基本信息,配合 Get-CimInstanceGet-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-ServiceStop-ServiceRestart-Service,支持名称、显示名或管道输入:

  • Start-Service -Name "wuauserv" — 启动指定服务(需管理员权限)
  • Stop-Service -DisplayName "Windows Update" — 停止服务(DisplayName 更易识别)
  • Get-Service bits | Restart-Service -Force — 强制重启(跳过确认,适用于已停止但依赖项未清理的情况)

修改服务启动类型(Startup Type)

启动类型决定服务开机是否自动加载,必须用 Set-Service 设置,且仅支持三个值:AutomaticManualDisabled

  • 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 输出的标准小写形式使用,避免歧义。

标签:Windowswin