Windows Server 2016 中的计划任务在被禁用然后启用后不会运行

Windows Server 2016 中的计划任务在被禁用然后启用后不会运行

我在 Windows Server 2016 上遇到一个问题,即在禁用并重新启用重复任务后,任务计划程序无法运行。

我创建了一个任务,其“触发器->开始”为五分钟后,并将任务设置为每五分钟运行一次。“设置->在错过计划启动后尽快运行任务”选项已选中。

一切正常 - 任务在预定的开始时间运行,然后每五分钟运行一次。

禁用该任务并等待五分钟以上。

启用该任务,它不会再次运行。

下次运行时间继续每五分钟更新一次,但任务不会运行,并且上次运行时间从未更新。

重新启用任务后,任务历史记录中将没有任何条目,并且 Windows 事件日志中也将没有任何事件。

当第二天到达开始时间时,任务将再次开始运行,但这并不可取,因为重新启用任务和再次到达开始时间之间可能会有较长的延迟。

答案1

该任务设置为每天运行,并无限期或每天重复。我将其更改为运行一次并无限期重复,当禁用任务后再启用时,它会恢复执行。

我认为这是可行的,因为当以这种方式设置时,调度程序会显示“触发后,无限期地每 5 分钟重复一次。”因此,一旦任务被触发,即使被禁用,它仍处于“已触发”状态,因此一旦再次启用,它就会按照计划恢复运行。

注意:首次设置任务时,需要将开始时间设置为将来的时间,以便首次触发任务。

答案2

这是预期行为。任务仅在满足其触发条件之一时启动。禁用任务的行为与停止任务具有相同的效果。一旦发生这种情况,它将不会再次运行,直到满足触发条件。不幸的是,创建新触发器的最小间隔是日常的,这在您的场景中有些不灵活。

我想到两个选择:

  • 无需禁用任务来停止其执行,只需停止它即可。如果您只需要在短时间内停止执行,这可能就是您需要做的全部事情。但是,如果您需要完全控制任务的启动或停止时间,请不要定义任何触发条件,然后手动启动/停止任务。
  • 创建多个触发器,这样在启用任务后触发器就会触发。这显然不是理想的选择,尤其是考虑到您需要每 5 分钟运行一次任务。

答案3

这突出了“每日”任务和“一次性”任务之间的行为差​​异。这有点违反直觉,但如果您希望能够禁用某项任务,然后在重新启用后立即让它自动再次触发,您需要将其设为“一次性”任务,而不是“每日”任务。

它们在任务列表中的样子如下(特意命名以突出计划的差异):

任务列表

当每日任务被禁用并重新启用时,它将在开始时间恢复(即当天晚些时候或第二天):

日常任务

如果一次性任务被禁用并重新启用,则相对于其开始时间,一旦再经过一个重复间隔,它将立即恢复。

一次性任务

相关内容