
Планировщик задач Windows позволяет запускать задачи как по расписанию, так и при появлении определенного события в окне просмотра событий (с помощью триггеров событий Windows). В этой статье мы покажем вам, как создать запланированную задачу, которая автоматически запускается после успешного завершения другой задачи.
Предположим, вы хотите запустить Pong задача планировщика после Ping задание успешно завершено.
- Откройте Задание Планировщик консоль (
Taskschd.msc
) и найдите Ping задача; - Нажмите на кнопку История вкладка на нижней панели задач. Она содержит полную историю событий, связанных с этой запланированной задачей; Если планировщик задач показывает только История (отключено) вкладке, вам нужно нажать Включить Вся история задач в правой панели «Действия». После этого все события задачи будут отображаться на вкладке История.
- Нам нужно событие с идентификатором события 102 (
Task completed
), который появляется после успешного завершения задания (Task Scheduler successfully finished
); - Откройте свойства этого события, перейдите к пункту Подробности , и переключитесь на вкладку Вид XML события. Мы будем использовать следующие данные из XML при построении оператора условия для новой запланированной задачи:
EventID: 102 Provider-Name: Microsoft-Windows-TaskScheduler Channel: Microsoft-Windows-TaskScheduler/Operational TaskName: \MyTasks\Ping
eventvwr.msc
) и перейдите в журнал приложений и служб -> Microsoft -> Windows -> Task Scheduler -> Operational. Щелкните элемент правой кнопкой мыши и выберите Включить журнал вариант. 
Теперь вы можете создать Понг запланированное задание.
При создании триггера для задания Pong необходимо указать условие для запуска задания при появлении события 102 (New Trigger -> По событию). Но проблема в том, что EventID 102 появляется после завершения любой задачи, а не только задачи Ping.
Вы можете создать более гибкие условия для выбора событий (Пользовательские), когда стандартный фильтр не позволяет достаточно точно выбрать событие. Нажмите на кнопку Новый Событие Фильтр кнопка.
Создайте новый фильтр, указав ранее полученные данные из XML-представления события.
- Журналы событий: Microsoft-Windows-TaskScheduler/Operational
- Источник событий: TaskScheduler
- Категория задач: Задание выполнено
Нажмите кнопку XML вкладка. На ней будет показано XML-представление вашего фильтра (XPath):
<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>
Проверьте Редактирование запроса вручную вариант. Вам необходимо привязать фильтр к задаче \MyTasks\Ping. Для этого замените следующую строку в XML-фильтре:
*[System[Provider[@Name="Microsoft-Windows-TaskScheduler"] and Task = 102]]
на:
*[EventData [@Name="TaskSuccessEvent"][Data[@Name="TaskName"]='\MyTasks\Ping']]
Сохраните настройки фильтра на вкладке Triggers (Custom Event Filter) и сохраните задачу Pong.
Теперь попробуйте запустить задачу Ping (вручную, по расписанию или с помощью PowerShell): Start-ScheduledTask mytasks\ping
). Когда задача Ping успешно завершится, задание Pong будет запущено немедленно.
Формат XPath показан ниже.
Таким образом, можно создавать целые цепочки задач для последовательного запуска заданий планировщика. Аналогичным образом можно создавать любые другие зависимости в задачах планировщика Windows. Например, при успешном завершении задания резервного копирования выполняется один сценарий, а если резервное копирование не удалось, необходимо запустить сценарий для очистки или исправления текущего состояния.