任务计划程序不支持任务失败时自动重启计算机,其设计用途仅为定时执行任务;它仅能配置失败后重试、补运行或写日志,无法触发系统级重启,真正实现需依赖服务恢复策略、系统故障自动重启设置或自定义监控脚本配合定时轮询。
任务计划程序本身不支持“任务失败时自动重启计算机”这一逻辑。它无法在任务执行出错后触发系统重启——这不是设计用途,也不符合安全机制。所谓“失败时重启”,实际是用户误将“定时重启”理解为“异常恢复手段”,或混淆了“任务失败响应”与“系统级重启动作”。
任务失败时能做什么
Windows 任务计划程序对失败任务的处理能力有限,但可配置以下基础响应:
- 失败后重试:在任务属性 → 【设置】选项卡中,勾选“如果任务失败,重新启动任务”,并设定“每隔 X 分钟重试,最多 Y 次”。这适用于脚本执行中断、网络临时不可达等短暂性失败,但不适用于 shutdown 命令本身失败(如权限拒绝)。
- 错过触发后补运行:在【触发器】→ 编辑触发器 → 勾选“如果错过开始时间,则尽快启动任务”。这对因系统关机/休眠导致未执行的任务有效,但不会引发重启。
- 发送邮件或写入事件日志:需配合 PowerShell 脚本或自定义操作,不能直接由计划任务内置功能完成重启。
真正需要“失败后重启”的场景怎么办
若目标是“检测到某服务崩溃/某进程异常/磁盘满/蓝屏后自动重启”,这不是计划任务能解决的问题,应转向系统级机制:
- Windows 故障转储与自动重启策略:在“系统属性 → 高级 → 启动和故障恢复 → 设置”中,勾选“系统失败时自动重新启动”。该设置针对内核级错误(如 STOP 错误),不是任务失败。
- 服务失败响应:对关键 Windows 服务(如 W3SVC、SQL Server),可在服务属性 → 【恢复】选项卡中设置“第一次失败时重新启动服务”,或“后续失败时运行程序”(例如调用 shutdown -r -f -t 0)。
- 自定义监控脚本 + 计划任务轮询:写一个 PowerShell 脚本检查特定条件(如 Event Log 中含“Error”级别且来源为 Application,或某进程 CPU 占用超 95% 持续 5 分钟),满足则执行 shutdown -r -f -t 0;再用计划任务每 5 分钟运行一次该脚本。
常见误解与避坑提示
很多人尝试在任务失败时直接调用重启命令,结果无效,原因如下:
- 任务计划程序的“失败”指进程退出码非 0,而 shutdown -r -f -t 0 成功执行后返回码是 0 —— 它不会“失败”,只是可能因权限不足根本没运行。
- 即使任务配置了“失败后重试”,重试的是原操作(比如再次运行 shutdown.exe),而非切换成另一个动作(如“重启电脑”)。
- 没有“失败 → 执行另一条命令”的原生分支逻辑,必须靠外部脚本封装判断与动作。











