PowerShell通过Get-Service的ServicesDependedOn和DependentServices属性,或Get-CimInstance的Dependencies/Dependents字段,可查询Windows服务的正向依赖(启动前需运行的服务)与反向依赖(受其影响的服务),支持状态查看、批量导出及脚本化分析。
powershell 提供了直接、高效的方式查询 windows 服务的依赖关系,核心是使用 get-service 和 get-wmiobject(或更新的 get-ciminstance)配合服务对象的 dependentservices 与 servicesdependedon 属性。关键在于理解“依赖”方向:一个服务“依赖于”其他服务(servicesdependedon),而其他服务“被它依赖”(即它是这些服务的从属服务,dependentservices)。
查看指定服务依赖的其他服务(ServicesDependedOn)
这是最常用场景:想知道某个服务启动前必须先运行哪些服务。
- 使用
Get-Service获取服务对象后,直接访问ServicesDependedOn属性:
输出中 ServicesDependedOn 是服务对象数组,显示的是它依赖的父服务名称(如 RpcSs、EventLog)。若想展开查看这些父服务的状态,可进一步管道处理:
查看哪些服务依赖于当前服务(DependentServices)
用于判断停用或修改某服务是否会影响其他功能。例如,停掉 RpcSs 可能导致大量服务异常。
- 同样用
Get-Service,但读取DependentServices属性:
结果会列出所有将 RpcSs 作为依赖项的服务名。如需完整信息(含状态),可类似展开:
用 WMI/CIM 获取更底层依赖(含启动类型与状态细节)
Get-Service 便捷但字段有限;WMI 类 Win32_Service 提供 Dependents 和 Dependencies 字符串数组(逗号分隔的服务短名),更适合脚本化分析。
- 查某服务依赖哪些服务(字符串形式):
Dependencies 字段值类似 "RpcSs, EventLog",可用 -split ',' 解析。注意:该字段内容不含空格,需 Trim 后再查询对应服务。
- 反向查谁依赖它(Dependents):
批量导出依赖树(可视化基础)
对系统级分析,可生成服务→依赖列表 CSV,再导入 Excel 或 Graphviz 绘图。
- 简单导出所有运行中服务及其直接依赖:
$svc = $_
$svc.ServicesDependedOn | ForEach-Object {
[PSCustomObject]@{ServiceName = $svc.Name; DependsOn = $_}
}
} | Export-Csv .\ServiceDependencies.csv -NoTypeInformation
该 CSV 可直接用于排序、筛选,或作为依赖图谱的数据源。如需递归展开多层依赖(如 A→B→C),需编写递归函数,但实际运维中两层通常已足够定位根因。


















