安排任务在另一个任务完成时开始

时间:2020-01-09 10:46:53  来源:igfitidea点击:

在Windows Task Scheduler中,我们可以在计划中运行特定任务,也可以在日志中注册特定事件之后运行任务。 (已在Windows中的事件触发器中对此进行了描述。)在本文中,我们将考虑如何在上一个任务完成后自动启动Scheduler任务。让我们看一下配置正在运行的Scheduler任务的依赖关系的算法,我们可以对其进行自定义以满足需求。

就我而言,在完成一个脚本之后,我必须从另一个用户帐户启动另一个脚本。因此,这些动作无法统一在单个任务中。

假设我们必须在Ping任务完成后启动Pong Scheduler任务。当任何任务启动或者完成时,有关此事件的信息将记录在系统日志中。我们将重点介绍Ping任务完成的事件。

打开任务计划程序控制台(Taskschd.msc),找到并选择Ping事件,然后在底部面板中转到"历史记录"选项卡,其中包含有关与此任务关联的所有事件的信息。我们需要事件ID 102(任务已完成)的事件,该事件在任务完成后生成。

当为Pong任务创建触发器时,我们必须为该任务创建一个触发器条件,以便在日志中出现ID为102的事件时启动任务(事件中的Task trigger)。但是问题在于EventID 102会在任何任务完成之后出现,而不仅仅是Ping任务。

通过从事件的XML视图中指定数据来创建新的事件过滤器:

事件日志:Microsoft-Windows-TaskScheduler /操作

事件源:TaskScheduler

任务类别:任务完成

将XPath代码更改为以下代码,它将过滤日志并搜索\ ping任务的TaskCompleted事件:

<QueryList> <Query Id="0" Path="Microsoft-Windows-TaskScheduler/Operational"> <Select Path="Microsoft-Windows-TaskScheduler/Operational">\*[System[Provider[@Name='Microsoft-Windows-TaskScheduler'] and Task = 102]]</Select> </Query> </QueryList>