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

关闭指定进程后PowerShell保活脚本仍无法停止的问题求助

修复PowerShell窗口保活脚本:关闭指定进程后自动停止

原脚本的问题在于仅在启动时检查一次Outlook进程状态,进入循环后不会重新验证,导致Outlook关闭后,脚本仍会继续执行保活逻辑。

修复要点

  • 在循环内部定期重新检查Outlook进程是否存在
  • 同步检查目标进程(记事本)的状态,避免目标进程关闭后触发错误
  • 检测到Outlook进程消失时,立即终止脚本

修复后的完整脚本

# 目标保活进程(记事本)
$targetProcName = "notepad"
# 触发保活的依赖进程(Outlook)
$triggerProcName = "Outlook"

# 初始检查:如果依赖进程未运行,直接退出
if (-not (Get-Process -Name $triggerProcName -ErrorAction SilentlyContinue)) {
    Write-Host "依赖进程未运行,退出脚本"
    Exit
}

Write-Host "开始维持目标进程活跃"
while ($true) {
    # 每次循环先重新检查依赖进程状态
    $triggerProc = Get-Process -Name $triggerProcName -ErrorAction SilentlyContinue
    if (-not $triggerProc) {
        Write-Host "依赖进程已关闭,终止脚本"
        Exit
    }

    # 检查目标进程是否仍在运行
    $targetProc = Get-Process -Name $targetProcName -ErrorAction SilentlyContinue
    if ($targetProc) {
        # 休眠9分钟(提前1分钟触发激活,避免10分钟无操作登出)
        Start-Sleep -Seconds 540
        # 激活目标窗口
        Add-Type -AssemblyName Microsoft.VisualBasic
        [Microsoft.VisualBasic.Interaction]::AppActivate($targetProc.Id)
        Write-Host "已激活目标窗口"
    }
    else {
        Write-Host "目标进程已关闭,等待重新启动..."
        Start-Sleep -Seconds 60
    }
}

关键改进说明

  1. 将进程名定义为变量,便于后续修改维护
  2. 循环内部每次都重新获取最新的进程状态,确保依赖进程关闭时能及时检测到
  3. 增加目标进程状态检查,避免目标进程关闭后执行激活操作引发错误
  4. 目标进程关闭时,脚本会进入等待轮询状态,而非直接退出(如果不需要此逻辑,可改为直接Exit)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.29 18:02:51