带有“不启动新实例”的任务计划程序仍在触发新实例

带有“不启动新实例”的任务计划程序仍在触发新实例

我有一个由 Windows 任务计划程序触发的 powershell 脚本。该脚本预计会无限期运行。第一次启动是在 11 月 3 日下午 2:30,然后无限期运行。但是从那时起,每天 2:30 它都会生成一个新实例,即使设置为“不启动新实例”。11
月 6 日有 3 个实例无限期运行。

请注意我已选择Windows 服务器 2019

已选择以下设置 **

  • 允许任务按需运行
  • 调度程序启动失败后尽快运行任务
  • 如果任务失败,每 1 分钟重新启动一次
  • 尝试重启最多 5 次
  • 如果任务已在运行,则“不启动新实例”**

已设置以下触发器

  • 于 2023 年 11 月 3 日下午 2:30 开始;每 1 天重复一次
  • 重复任务5分钟持续无限期

答案1

这是设计使然。当您使用计划时,重复任务将生成一个实例。否则它就不是重复任务。

如果您的脚本应该始终运行并且脚本本身循环,请按如下方式设置脚本:

事件发生时运行一次:计算机启动时。将任务设置为重复 5 分钟。根据您希望从某人关闭任务的那一刻起恢复的速度来更改此间隔。如果您确实希望它每天只恢复一次,请将其设置为 1 小时,然后将 1 更改为 24,它将更改为 1 天。

在设置中,您现在可以指定如果它已经运行则不启动。

这样做的原因是因为任务在预定的时刻(计算机启动时)启动一次,并且每次重复时,它可能会决定不启动,因为活动任务已经在运行。

当任务运行时,它会被赋予一个 ID,并且它只根据该 ID 检查正在运行的任务。

如果您还将任务设置为按需运行,那么现在您可以按需运行。下次服务器重新启动时,它将在登录屏幕上自动以系统身份启动任务。如果任务需要用户权限,而不是在计算机启动时运行,请将其更改为在登录时运行。

请注意,当任务以系统身份运行时,您可以在任务管理器中看到它,但您无法与任务交互,也无法查看其进度。这很有用,因此您可以确保没有人意外关闭脚本,但系统用户没有网络访问权限,因此如果您在网络共享等上工作,您的脚本可能无法运行。

答案2

正如您所发现的,“不启动新实例”选项并不可靠。它在大多数情况下都能正常工作,但其他情况下则不行,而且没有任何解释。

为了确保它正常工作,我建议您自己按照以下方式操作(我过去曾使用过):

  • 将任务设置为每分钟启动一次
  • 在任务中测试您的主可执行文件或整个任务是否已在运行,如果尚未运行,则启动它。

您可以使用批处理文件或 PowerShell 脚本来完成任务。

请注意,在批处理中,如果您希望使用 tasklist 命令,请注意,它没有可以测试的退出状态,因此您需要使用 这个解决方法

相关内容