Фокусы с планировщиком заданий (Task Scheduler).

Фокусы с планировщиком заданий (Task Scheduler).

@root_it

Давайте представим ситуацию, в которой нам необходимо выполнить задание сразу же после завершения другого определённого задания из планировщика заданий. К примеру, у вас есть два скрипта. Первый выгребает определенный набор событий из журнала Security, и формирует некие файлы для последующей обработки. Второй скрипт запускается автоматически после завершения первого, обрабатывает файлы, и записывает данные в некую SQL базу.

После каждого успешного завершения задания в журнале Microsoft-Windows-TaskScheduler/Operational создаётся событие event ID 102. Идея заключается в том, чтобы настроить запуск второго задания сразу же после создания события указанного выше, сигнализирующее нам об успешном завершении первого. Но не все так просто. Дело в том, что любое успешно завершенное задание будет генерировать событие event ID 102, и наш второй скрипт по такому принципу будет постоянно запускаться.

Для того чтобы скрипт запускался после завершения определенного задания, нам необходимо создать измененный фильтр событий, в котором явно прописать какое именно задание нужно отслеживать.

Давайте создадим первое задание и назовем его “runCalc”, которое будет запускать нам калькулятор(calc.exe).

Создаем наше первое задание:

Определяем запуск команды:

Нажимаем ОК. Давайте выполним это задание и посмотрим, что появилось в логах:

Отлично, задание отработало, калькулятор запустился.

Создадим второе задание и назовем его “afterCalc”. На вкладке “Триггеры” нажимаем кнопку “Создать”. В появившемся окне в Параметрах выбираем “Настраиваемое” и жмём кнопку “Изменить фильтр событий”:

В следующем появившемся окне выбираем вкладку “XML” и в окно ввода набираем этот текст:

<QueryList>
 <Query Id="0" Path="Microsoft-Windows-TaskScheduler/Operational">
   <Select Path="Microsoft-Windows-TaskScheduler/Operational">*[EventData[@Name='TaskSuccessEvent'][Data[@Name='TaskName']='\runCalc']]
</Select>
 </Query>
</QueryList>

Вам необходимо заменить текст “\runCalc” на имя своего задания.

Пусть по завершению первого задания у нас будет запускаться командная строк(cmd.exe). Закрываем предыдущие вкладки и переходим на вкладку действие:

Вот в принципе все. Если вы все сделали правильно, то после того как вы закроете приложение calc.exe, должна запуститься командная строка (cmd.exe). Данный метод может быть полезен для автоматизации разного рода задач, где требуется последовательный запуск определенных скриптов. 


Report Page