如何在Windows服务器上通过PID使用PowerShell批量重启服务
通过PowerShell利用PID批量重启Windows服务
官方命令语法(中文翻译)
Restart-Service [-Force] [-Name] <字符串[]> [-PassThru] [-Include <字符串[]>] [-Exclude <字符串[]>] [-WhatIf] [-Confirm] [<公共参数>]
Restart-Service本身不支持直接通过PID参数重启服务,需要先通过PID关联到对应的服务对象,再执行重启操作。以下是具体实现步骤:
1. 定义目标PID列表
将需要处理的服务PID存入数组,替换成实际的PID值:
$targetPIDs = @(1234, 5678, 9012) # 替换为你的目标PID集合
2. 批量关联服务并重启
使用Get-CimInstance(推荐替代旧版Get-WmiObject)查询PID对应的服务,然后调用Restart-Service执行重启:
foreach ($pid in $targetPIDs) { # 根据PID查询对应的服务 $service = Get-CimInstance Win32_Service -Filter "ProcessId = $pid" if ($service) { Write-Host "正在重启服务: $($service.DisplayName) (服务名: $($service.Name)) - PID: $pid" # 执行重启,-Force参数会强制重启依赖该服务的其他服务,按需选择 Restart-Service -Name $service.Name -Force } else { Write-Warning "未找到与PID $pid 关联的服务" } }
注意事项
- 必须以管理员权限运行PowerShell,否则可能因权限不足导致服务重启失败
-Force参数会强制重启依赖目标服务的其他服务,若不需要此行为可移除该参数- 如果PID对应的不是服务进程(比如普通应用程序),脚本会输出警告信息,不影响其他服务的处理
内容的提问来源于stack exchange,提问作者陳冠翔
相关产品推荐
相关产品推荐

