如何在失败后使用python脚本触发Windows任务计划重新启动

时间:2016-09-12 20:07:49

标签: python windows error-handling scheduled-tasks

我有一个python脚本,当我发现错误时,我抛出sys.exit(1)。这导致任务调度程序显示"(0x1)"上次运行结果下的评论。成功运行返回"操作成功完成。 (为0x0)&#34 ;.不幸的是,虽然这不会触发任务再次运行,即使在设置下我有"如果任务失败,重启每一个:"选中复选框。有关如何改善这一点的任何想法?

另一篇帖子有以下答案,但我找不到自定义过滤器的位置?在四个设置下;创建基本任务,记录事件时,操作,完成

你可以,

1激活Schedule的历史记录(如果尚未激活) 2关于历史"行动已完成"右键单击"此活动的附加任务......" 3像这样设置自定义过滤器:

* [系统[(EventID = 201)]]和* [EventData [数据[@Name =' ResultCode'] =' 1']]

1 个答案:

答案 0 :(得分:1)

鉴于已启用任务计划程序的事件历史记录,您可以为应重新启动任务的每个退出代码添加触发器。使用自定义XML查询触发“在事件上”。触发器应该延迟至少30秒以限制重启任务的尝试。

这是一个示例查询。它查找事件ID 201(操作已完成),其任务名为“\ PyTest”(使用完整路径,从根“\”文件夹开始)和退出代码0xC000013A(即STATUS_CTRL_C_EXIT,即控制台进程被Ctrl + Break杀死。

<QueryList>
  <Query Id="0" Path="Microsoft-Windows-TaskScheduler/Operational">
    <Select Path="Microsoft-Windows-TaskScheduler/Operational">
      *[System[EventID=201]] and 
      *[EventData[Data[@Name='TaskName']='\PyTest']] and
      *[EventData[Data[@Name='ResultCode']='0xC000013A']]
    </Select>
  </Query>
</QueryList>