在任务计划程序中创建依赖项

时间:2014-10-27 15:35:07

标签: powershell scheduled-tasks

我已经设置了几个更新SQL表的日常任务,然后发送附带CSV的电子邮件。如果第一个任务成功运行,则只有5个计划任务成功完成。如果第一个任务成功完成,我如何在任务计划程序中添加一个参数来运行顺序任务? 请求背后的原因是由于有时第一个脚本在几分钟内运行而其他日子可能需要一个多小时才能完成。有什么建议? 谢谢

4 个答案:

答案 0 :(得分:2)

我不认为你想要的是Windows任务调度程序。我建议您启动依赖于第一个脚本本身成功运行的第一个脚本。这样你就可以确定它已经完成了它的工作。

此外,您的问题的标题有点误导,例如"在TaskScheduler中创建依赖关系"会更合适。

答案 1 :(得分:1)

可以做到!看这里 http://blogs.msdn.com/b/davethompson/archive/2011/10/25/running-a-scheduled-task-after-another.aspx

总之,虽然说你有一个名为Ping的任务,你想要一个名为pong的任务在它之后运行。

  1. 创建一个名为Pong的任务
  2. 创建一个事件触发器
  3. 选择自定义并将XML编辑为此类
  4. <QueryList>
       <Query Id="0" Path="Microsoft-Windows-TaskScheduler/Operational">
          <Select Path="Microsoft-Windows-TaskScheduler/Operational">*[EventData
    [@Name='TaskSuccessEvent'][Data[@Name='TaskName']='\Ping']]</Select>
       </Query>
    </QueryList>
    

答案 2 :(得分:0)

如果您的任务需要花费不同的时间,那么Windows事件日志条目将成功完成该任务的事件ID代码,您应该能够使其他任务使用任务调度程序触发器类型“On a event “使用关联的日志,来源和事件ID。

如果没有,其他提案可能是剩下的唯一选择。

答案 3 :(得分:0)

我们已经多次遇到同样的需求。我们创建“依赖”类型功能的两种方式是:

  1. 将计划设置为每 30 分钟运行一次。在你的app启动的时候看依赖是否已经完成,如果没有就退出,否则你处理。

  2. 当存在多个依赖项时,我们创建了一个管理这些依赖项的应用程序。每个需要依赖于其他进程运行的进程将从新的控制器应用程序 (CA)' 启动。 CA 计划每 30 分钟运行一次(或每一次对您的进程有意义),它通过检查依赖项并运行下一个应用程序来控制多个应用程序。我们不会让 CA 继续运行,而是生成要运行和退出的进程。下次 CA 启动时,它会检查依赖项并采取所需的操作或退出直到再次启动。