You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

求后台监控并终止指定进程的PowerShell脚本(SCCM部署场景)

PowerShell后台进程监控与自动终止脚本

我之前帮同事解决过几乎一模一样的SCCM部署问题——安装程序末尾启动的子许可进程把整个部署脚本卡住,导致SCCM判定安装失败。下面这个脚本正好能满足你的需求:在后台持续监控目标进程,一旦它启动就立刻强制终止,确保主安装脚本可以顺利以exit 0正常结束。

完整脚本代码

# -------------------------- 配置区 --------------------------
# 替换为你要监控并终止的目标进程名称(无需加.exe后缀)
$targetProcessName = "SubLicenseProcess"
# 进程检查间隔(单位:秒,可根据需求调整,比如0.5秒更灵敏)
$checkInterval = 1
# 是否只终止一次(设为$true则终止后停止监控,$false则持续监控)
$terminateOnce = $false
# -----------------------------------------------------------

# 启动后台监控任务,避免阻塞主安装流程
$monitorJob = Start-Job -ScriptBlock {
    param($processName, $interval, $stopAfterFirstKill)
    while ($true) {
        # 静默检查目标进程是否存在
        $targetProcess = Get-Process -Name $processName -ErrorAction SilentlyContinue
        
        if ($targetProcess) {
            # 强制终止进程,忽略终止时的错误(比如进程已经自行退出)
            Stop-Process -Id $targetProcess.Id -Force -ErrorAction SilentlyContinue
            Write-Host "[监控任务] 已终止目标进程: $processName (PID: $($targetProcess.Id))"
            
            # 如果设置为只终止一次,就退出循环
            if ($stopAfterFirstKill) {
                break
            }
        }
        
        # 等待指定间隔后再次检查
        Start-Sleep -Seconds $interval
    }
} -ArgumentList $targetProcessName, $checkInterval, $terminateOnce

# -------------------------- 主安装流程 --------------------------
Write-Host "开始执行SCCM应用程序安装..."
# 替换为你的实际安装命令(比如静默安装命令)
# & "C:\Path\To\Your\MainInstaller.exe" /quiet /norestart
# ---------------------------------------------------------------

# 等待主安装流程完成(如果你的安装命令是阻塞式的,这一步会自动等待;如果是非阻塞,需添加等待逻辑)
# 示例:等待主安装进程结束(假设主安装进程名为MainInstaller)
# Wait-Process -Name "MainInstaller" -Timeout 3600 -ErrorAction SilentlyContinue

# 安装完成后,停止并清理后台监控任务
Stop-Job -Job $monitorJob
Remove-Job -Job $monitorJob
Write-Host "监控任务已停止,安装流程正常结束"

# 以exit code 0退出,告知SCCM安装成功
exit 0

关键部分说明

  • 配置区:你只需要修改开头的3个参数即可适配你的场景:
    • $targetProcessName:填写子许可进程的名称(比如SubLicenseUI,不要加.exe)
    • $checkInterval:调整进程扫描的间隔,数值越小监控越灵敏
    • $terminateOnce:如果子许可进程只会启动一次,设为$true可以减少系统资源占用
  • 后台监控任务:用Start-Job启动独立的后台任务,这样监控逻辑不会阻塞主安装脚本的执行
  • 强制终止进程:Stop-Process -Force确保进程被彻底终止,避免弹出确认窗口或残留进程
  • 清理任务:安装完成后一定要用Stop-Job和Remove-Job清理后台任务,避免PowerShell残留无用的后台进程

注意事项

  • 权限要求:如果目标进程是管理员权限运行的,你的PowerShell脚本也需要以管理员权限执行,否则可能无法终止进程
  • 调试建议:在测试环境运行时,可以保留Write-Host的输出,确认监控任务是否正常识别并终止目标进程
  • 非阻塞安装适配:如果你的主安装命令是非阻塞的(启动后立刻返回),需要添加额外的等待逻辑,比如用Wait-Process等待主安装进程结束,再停止监控任务

内容的提问来源于stack exchange,提问作者Craig Cobbold

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.08 14:17:27