Как запустить задание планировщика Windows после завершения другого задания?

Планировщик заданий Windows (Task Scheduler) позволяет запускать задачи как по расписанию, так и при появлении в журнале определенного события (описывалось в статье « Триггеры событий в Windows »). В этой статье мы покажем, как создать задание планировщика, которое автоматически запускается после успешного завершения другого задания.

В моем примере я не мог объединить два задания в одно, потому что мне нужно было запускать команду от имени другого пользователя после успешного завершения первого скрипта (задания).

Предположим, нам нужно запустить задание планировщика Pong после успешного завершения задания Ping .

  1. Откройте консоль Task Scheduler ( Taskschd.msc ) и найдите задание Ping ;
  2. В нижней панели перейдите на вкладку History . Здесь содержится полная история событий, связанных с этим заданием планировщика;
    Если в Task Scheduler присутствует только вкладка History (disabled), вам нужно в правой панели Actions нажать кнопку Enable All Tasks History . После этого события задания станут отображаться на вкладке History планировщика.

  3. Нас интересует событие с EventID 102 (Task completed), которое появляется после успешного завершения задачи (Task Scheduler successfully finished);
  4. Откройте свойства этого события, перейдите на вкладку Detail и переключитесь в XML режим представления события ( XML View ). Мы будем использовать следующие данные из XML при построении условия для нового задания планировщика:
EventID: 102_x000D_Provider-Name: Microsoft-Windows-TaskScheduler_x000D_Channel: Microsoft-Windows-TaskScheduler/Operational_x000D_TaskName: MyTasksPing

Убедитесь, что для события Task Scheduler включены логи Operational. Откройте консоль Event Viewer ( eventvwr.msc ) и перейдите в раздел Applications and Services Log -> Microsoft -> Windows -> Task Scheduler -> Operational. Щелкните правой клавишей по журналу и выберите опцию Enable Log.

Теперь вы можете создать задание планировщика Pong .

При создании триггера для задания Pong нужно указать условие срабатывания задания при появлении в журнале события 102 (Триггер задания On an event ). Но проблема в том, что EventID 102 появляется при завершении любого задания, а не только задания Ping.

Вы можете создать более гибкое условия для выбора событий ( Custom ), когда стандартный фильтр не помогает достаточно четко выбрать событие. Нажмите на кнопку New Event Filter .

Создайте новый фильтр, указав ранее полученные данные из XML представления события.

  • Events Logs : Microsoft-Windows-TaskScheduler/Operational
  • Event source : TaskScheduler
  • Task category : Task completed

Перейдите на вкладку XML . На ней будет выведено XML представление вашего фильтра (XPath):

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

Включите опцию Edit query manually. Вам нужно привязать ваш фильтр к заданию MyTasksPing. Для этого нужно заменить в фильтре строку:

*[System[Provider[@Name='Microsoft-Windows-TaskScheduler'] and Task = 102]]

На

*[EventData [@Name='TaskSuccessEvent'][Data[@Name='TaskName']='MyTasksPing']]

Сохраните настройки вашего фильтра на вкладке Triggers ( Custom Event Filter ) и сохраните задание pong.

Теперь попробуйте запустить задание ping (вручную, по расписанию или с помощью PowerShell : Start-ScheduledTask mytasksping ). Когда задание ping успешно завершится, задание pong будет запущено немедленно.

Формат записи XPath представлене ниже.

Таким образом вы можете настроить целые цепочки заданий (task chains), для последовательного запуска заданий планировщика. По аналогии вы можете создать любые другие зависимости в заданиях планировщика Windows. Например, в случае успешной отработки задания резервного копирования вы запускаете один сценарий, а если резервное копирование завершилось с ошибкой – вам нужно запустить сценарий очистки или исправления текущего состояния.

В одной из предыдущих статей мы рассматривали еще один сценарий, который позволяет выполнить программу/скрипт, если другая программа была запущен или закрыта в Windows ( https://remontka.com/vypolnit-dejstvie-pri-zapuske-zavershenii-programmy-v-windows/ ).
admin

Share
Published by
admin

Recent Posts

Что такое Zulip

Zulip — программное обеспечение для реализации корпоративного чата. Разработан в 2012 году, в 2014 был…

2 месяца ago

Что такое Zookeeper

Zookeeper — cервис-координатор, который позволяет обеспечить контроль синхронизации данных. Разработан на Java компанией Apache Software…

2 месяца ago

Что такое Zimbra

Zimbra — программное обеспечение для реализации почтового сервиса или, если сказать точнее, автоматизации совместной деятельности…

2 месяца ago

Что такое Zabbix

Zabbix — бесплатная система мониторинга. Позволяет отслеживать состояние сетевых узлов, компьютеров и серверов. Возможности: Поддержка…

2 месяца ago

Что такое YouTube

YouTube — компания-владелец одноименного портала для просмотра и хранения видео. Чтобы пользоваться данным порталом достаточно…

2 месяца ago

Что такое yota

Yota — провайдер, предоставляющий доступ к сети Интернет по беспроводной связи. Впервые, сервис начал работать…

2 месяца ago