powershell通过get-service、start-service、stop-service、restart-service等cmdlet实现服务状态查询、启停控制、依赖分析及远程管理,支持管道、筛选、批量操作与自动化。
windows 服务运维中,powershell 提供了一套直接、可靠且可批量操作的服务管理指令。掌握核心命令,能快速查状态、启停服务、排查依赖,无需打开“服务”图形界面。
查看服务状态与信息
最常用的是 Get-Service,它能列出所有服务或按条件筛选:
- 不带参数:
Get-Service显示本地全部服务(名称、显示名、状态) - 按服务名模糊匹配:
Get-Service -Name wmi*(匹配 winmgmt、wscsvc 等) - 按显示名查找更直观:
Get-Service -DisplayName "*Logon*"(如 Secondary Logon) - 只看运行中的服务:
Get-Service | Where-Object Status -eq 'Running'
启动、停止与重启服务
对应三个基础命令,支持单个或多个服务名,也支持管道传递:
- 启动:
Start-Service -Name WinRM或Get-Service -Name dnscache | Start-Service - 停止:
Stop-Service -DisplayName "Windows Update" - 重启(等效于先 Stop 再 Start):
Restart-Service -Name BITS - 强制重启(跳过依赖检查,慎用):
Restart-Service -Name winmgmt -Force
检查服务依赖关系
某些服务启停失败,常因依赖项未就绪。用两个参数快速定位:
- 查某服务依赖哪些服务:
Get-Service -Name LanmanWorkstation -RequiredServices - 查哪些服务依赖某服务:
Get-Service -Name Dnscache -DependentServices - 组合使用可画出依赖链,例如:
(Get-Service -Name Dnscache -DependentServices).Name | ForEach-Object { Get-Service $_ -RequiredServices }
远程服务管理
PowerShell 5.1 及更早版本支持 -ComputerName 参数;PowerShell 7+ 需用 Invoke-Command:
- 旧版方式(仅限 PS 5.1):
Get-Service -Name Spooler -ComputerName Server01 - 通用方式(推荐):
Invoke-Command -ComputerName Server02 -ScriptBlock { Get-Service -Name wuauserv } - 一次查多台:
Invoke-Command -ComputerName Server01,Server02 -ScriptBlock { Get-Service -Name Netlogon }











