PowerShell 是管理 Windows 服务最高效的方式,支持查询(Get-Service)、启停(Start/Stop/Restart-Service)、配置启动类型(Set-Service)、批量处理及自动化监控。
powershell 是管理 windows 服务最高效的方式之一,它比图形界面更灵活、比命令提示符更强大。掌握几个核心命令,就能快速查询、启停、配置服务,还能批量处理和自动化监控。
查看服务状态和基本信息
使用 Get-Service 可以列出所有服务及其当前状态(Running、Stopped、Paused 等):
- Get-Service —— 显示全部服务(名称、状态、显示名称)
- Get-Service -Name "wuauserv" —— 查指定服务(如 Windows 更新服务)
- Get-Service | Where-Object Status -eq "Running" | Select-Object Name,DisplayName,Status —— 筛选运行中的服务并精简输出
- Get-Service | Sort-Object Status -Descending | Select-Object -First 10 —— 按状态倒序排列,看前 10 条
启动、停止和重启服务
服务控制操作需管理员权限,执行前建议先确认服务是否允许手动控制(StartupType 不为 Disabled):
- Start-Service -Name "bits" —— 启动后台智能传输服务
- Stop-Service -Name "wuauserv" -Force —— 强制停止 Windows 更新服务(-Force 忽略依赖警告)
- Restart-Service -Name "dnscache" —— 重启 DNS 客户端服务
- Get-Service "Spooler" | Restart-Service —— 通过管道方式重启打印后台处理程序
修改服务启动类型和属性
用 Set-Service 调整服务的启动模式(Automatic、Manual、Disabled),注意:某些系统服务受策略或依赖关系限制,修改可能失败:
- Set-Service -Name "wuauserv" -StartupType Manual —— 设为手动启动
- Set-Service -Name "Dhcp" -StartupType AutomaticDelayedStart —— 设为自动(延迟启动)
- Get-WmiObject Win32_Service -Filter "Name='wuauserv'" | Select-Object Name,StartMode,State,PathName —— 获取更底层信息(如可执行路径)
批量操作与简单监控脚本
结合循环、条件判断和日志记录,可实现日常运维自动化:
- 检查多个关键服务是否运行:"BITS","wuauserv","Dhcp" | ForEach-Object { Get-Service $_ -ErrorAction SilentlyContinue | Select-Object Name,Status }
- 导出当前服务状态到 CSV:Get-Service | Select-Object Name,DisplayName,Status,StartType | Export-Csv C:\services.csv -NoTypeInformation
- 每 5 分钟检测 Spooler 是否意外停止,自动重启:while($true){if((Get-Service Spooler).Status -ne "Running"){Start-Service Spooler}; Start-Sleep -Seconds 300}


















