У меня есть две задачи, настроенные в планировщике задач Windows. Один должен работать в 3 часа ночи, а другой - через 15 минут. Если компьютер выключен, когда задачи запланированы для запуска, то задачи будут запускаться при запуске компьютера. Проблема в том, что две задачи не могут выполняться одновременно. Что я хочу сделать, так это дождаться завершения первой из двух задач, а после ее завершения подождать 15 минут, прежде чем начнется вторая задача. Как я могу настроить это в планировщике задач? Я не могу настроить систему так, чтобы вторая задача начала выполняться, как только первая будет выполнена, потому что эти две задачи - не что иное, как командные файлы, которые вызывают другую программу, и две вещи, которые эти командные файлы делают с программой. не может быть сделано в то же время. Поскольку первое задание должно занимать всего 5 минут, мне нужно дать некоторую свободу для начала второго задания.
Планировщик задач Windows - Запланируйте запуск задачи через 15 минут после завершения другой задачи
2 ответа
Я понимаю, что это уже помечено как ответное, но в моем сценарии есть требование, по которому я не могу изменить задачу «запуска».
Решение состоит в том, чтобы создать задачу с пользовательским триггером фильтра событий, который срабатывает после завершения триггерной задачи. Источник этого решения взят отсюда, но я объяснил основную часть ниже.
В планировщике задач выберите задачу запуска и на панели ниже выберите вкладку «Журнал». Предполагая, что это задание выполнено хотя бы один раз, прежде чем вы сможете увидеть событие с категорией задач завершенной. Щелкните правой кнопкой мыши на событии «Завершенная задача» и выберите «Свойства события». На вкладке «Сведения» в открывшемся окне «Свойства события» выберите представление XML, которое должно выглядеть примерно так (потенциально конфиденциальная информация удалена):
<Event xmlns="http://schemas.microsoft.com/win/2004/08/events/event">
<System>
<Provider Name="Microsoft-Windows-TaskScheduler" Guid="{DE7B24EA-73C8-4A09-985D-5BDADCFA9017}" />
<EventID>102</EventID>
<Version>0</Version>
<Level>4</Level>
<Task>102</Task>
<Opcode>2</Opcode>
<Keywords>0x8000000000000001</Keywords>
<TimeCreated SystemTime="2014-01-21T15:28:27.746689500Z" />
<EventRecordID>978</EventRecordID>
<Correlation ActivityID="{XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX}" />
<Execution ProcessID="10656" ThreadID="11656" />
<Channel>Microsoft-Windows-TaskScheduler/Operational</Channel>
<Computer>XXXXXXXXXXXXXXXXXXXXXXXXXX</Computer>
<Security UserID="S-X-X-XX-XXXXXXXXXX-XXXXXXXXXX-XXXXXXXXXX-XXX" />
</System>
<EventData Name="TaskSuccessEvent">
<Data Name="TaskName">\ping</Data>
<Data Name="UserContext">XXXXXXXXXX\XXXXXXXXXXXXX</Data>
<Data Name="InstanceId">{XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX}</Data>
</EventData>
</Event>
Пользовательский триггер, который нужно написать, в основном представляет собой выражение XPath, которое оценивается как фильтр, который соответствует событию "Завершено задание" запускающей задачи. С задачей под названием "ping" триггер будет:
<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>
В окне «Редактировать триггер» вы можете установить «Задание задержки на: 15 минут», которое должно достичь желаемого результата без необходимости изменять исходное задание.
Есть множество других XPath, которые можно написать, чтобы сделать более интересные триггеры. Этот пост содержит немного больше информации, и эта документация Microsoft кажется хорошим началом для более глубокого прочтения.