Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/powershell/11.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Powershell 在任务调度器中创建依赖项_Powershell_Scheduled Tasks - Fatal编程技术网

Powershell 在任务调度器中创建依赖项

Powershell 在任务调度器中创建依赖项,powershell,scheduled-tasks,Powershell,Scheduled Tasks,我已经设置了几个日常任务,更新SQL表,然后发送一封附带CSV的电子邮件。只有在第一个任务成功运行的情况下,5个计划任务才能成功完成。如何在Task Scheduler中添加参数以仅在第一个任务成功完成时运行顺序任务? 请求背后的原因是,有时第一个脚本在几分钟内运行,而其他几天可能需要一个多小时才能完成。有什么建议吗? 谢谢我认为windows任务计划程序不可能满足您的需求。我建议您从第一个脚本本身启动依赖于第一个脚本成功运行的脚本。这样你就可以确定它已经完成了它的工作 另外,您问题的标题有点误

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

我认为windows任务计划程序不可能满足您的需求。我建议您从第一个脚本本身启动依赖于第一个脚本成功运行的脚本。这样你就可以确定它已经完成了它的工作


另外,您问题的标题有点误导性,例如“在TaskScheduler中创建依赖项”更合适。

如果您的任务需要不同的时间,并且留下了特定于该任务成功完成的Windows事件日志条目事件ID代码,您应该能够使您的其他任务使用具有关联日志、源和事件ID的任务计划程序触发器类型“On a event”

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

可以做到!看这里

总之,假设您有一个名为Ping的任务,并且希望一个名为pong的任务在它之后运行

  • 创建一个名为Pong的任务
  • 在事件触发器上创建
  • 选择Custom并将XML编辑为如下内容
  • 
    *[EventData
    [@Name='TaskSuccessEvent'][数据[@Name='TaskName']='\Ping']]
    

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

  • 将计划设置为每30分钟运行一次。在应用程序启动时,查看依赖关系是否已完成,如果未退出,则执行处理

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


  • 同意。如果直接从第一个任务(在任务中)启动其他任务不可行或由于某种原因难以启动,则可以按需启动其他计划任务,然后使用
    start ScheduledTask
    schtasks.exe
    启动已计划的任务。
    <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>