如何通过Windows Task Scheduler每2分钟运行PowerShell脚本,支持手动或绑定应用启停
方案1:修复Windows任务计划程序配置
1.1 实现每2分钟重复执行
界面下拉选项最低仅显示5分钟属于常规视觉误导,重复间隔的输入框支持手动编辑值,直接输入2后单位选择分钟即可生效,无需局限于下拉给出的可选值。
1.2 解决到点不执行问题
按以下顺序排查配置项即可修复:
- 触发器配置:选择「每天」作为基础触发类型,开始时间设置为早于当前时间1分钟,高级设置中勾选「重复任务间隔」,持续时间选择「无限期」,同时勾选「如果任务错过计划开始时间,立即启动任务」
- 任务全局配置:进入「设置」标签页,勾选「不管用户是否登录都要运行」(无GUI交互的脚本建议开启),取消勾选「任务运行时间超过以下时间就停止」,勾选「如果请求后任务还在运行,不要启动新实例」避免重复进程冲突
1.3 实现两种触发方式
- 手动控制启停:任务计划程序原生支持右键任务点「运行」启动周期、点「结束」停止任务及后续触发。如果需要快捷操作,可以创建两个桌面快捷方式,启动命令为
schtasks /run /tn "你的任务名称",停止命令为schtasks /end /tn "你的任务名称",双击即可完成控制 - 绑定应用同步启停:新建两个事件触发器,第一个匹配目标应用启动时的系统日志事件ID,触发时启动你的定时任务;第二个匹配目标应用退出的系统日志事件ID,触发时执行停止任务的命令。如果不想找事件ID,也可以额外写一个进程检测脚本,循环判断目标应用是否在运行,同步控制定时任务的启停即可
方案2:轻量替代方案
如果觉得任务计划程序配置过于繁琐,可以直接用原生PowerShell实现需求,无需额外工具:
# 可修改配置项 $targetApp = "notepad.exe" # 替换为要绑定的应用进程名 $targetScriptPath = "C:\你的脚本路径\test.ps1" # 替换为你要运行的PowerShell脚本路径 $runInterval = 120 # 运行间隔,单位为秒,120即2分钟 $runMode = "manual" # 可选值:manual 手动模式、app 绑定应用模式 # 主运行逻辑 while($true){ $allowRun = $false if($runMode -eq "manual"){ $allowRun = $true # 手动模式下持续运行,关闭当前PowerShell窗口即可停止 }else{ $appProcess = Get-Process $targetApp -ErrorAction SilentlyContinue if($appProcess){$allowRun = $true} } if($allowRun){ & $targetScriptPath } Start-Sleep $runInterval }
将上述代码保存为wrapper.ps1直接运行即可,切换运行模式只需修改$runMode的值即可。
内容的提问来源于stack exchange,提问作者Sam
相关产品推荐
相关产品推荐

