Как планировщик задач Windows в Win7 распознает сбойную задачу? - PullRequest
24 голосов
/ 26 августа 2009

Я работаю с Windows 7, и у меня есть приложение, которое возвращает ноль (0x0) в случае успеха и одно (0x1) в случае ошибки.

Я запланировал это приложение с помощью планировщика заданий Windows. Я установил флажки «Если не удалось выполнить задачу, перезапустите все» и «Попытка перезапустить до:».

Я думал, что ненулевого кода возврата из приложения будет достаточно для запуска задачи, которая будет перезапущена через заданный интервал. Но ничего не происходит.

Есть идеи, в чем может быть проблема? Я пытался гуглить, но ничего не нашел.

Ответы [ 4 ]

11 голосов
/ 23 апреля 2012

Создайте новую задачу и задайте пользовательский запрос на событие следующим образом:

<QueryList>
  <Query Id="0" Path="Microsoft-Windows-TaskScheduler/Operational">
    <Select Path="Microsoft-Windows-TaskScheduler/Operational">*[System[EventID=201]] and *[EventData[Data[@Name='ResultCode']!='0']] and *[EventData[Data[@Name='TaskName']='\YOUR TASK NAME HERE']]</Select>
  </Query>
</QueryList>

Установите дополнительные параметры триггера на Задержка задачи на период времени, например 15 минут.

Настройка действия новой задачи для запуска программы:

Программа / скрипт:

schtasks

Добавить аргументы:

/Run /TN "\YOUR TASK NAME HERE"

Это запланирует повторное выполнение исходной задачи через 15 минут после регистрации в событии ненулевого кода результата.

6 голосов
/ 27 ноября 2009

У меня возникла такая же проблема на Windows 2008 server Windows Task Scheduler. Действие возвращает ненулевой код, но планировщик считает задачу выполненной :

Task Scheduler successfully completed task "\SET Tasks\Scheduled task [Backup SET Server]" , instance "{...}" , action "C:\Windows\SYSTEM32\cmd.exe" with return code 1.

Я нашел в Интернете только один ответ:

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

... в этом документе: www.onlinetoolworks.com / docs / winTaskSched.doc

Так что теперь я думаю, что единственным способом обойти эту проблему может быть использование запуска задачи по событию . Я расследую.

С уважением,

Оливье.

3 голосов
/ 27 ноября 2010

Можно,

  1. активировать историю для расписания (если еще нет)
  2. в истории «Действие выполнено», щелкните правой кнопкой мыши «Прикрепленное задание к этому событию ...»
  3. Установите пользовательский фильтр следующим образом:

    * [System [(EventID = 201)]] и * [EventData [Data [@ Name = 'ResultCode'] = '1']]

Наслаждайтесь

Тило

используется в Win 2008 R2 (Exchange в качестве почтового сервера)

0 голосов
/ 27 июня 2019

Никто не ответил на заглавный вопрос. Кажется, что у планировщика задач нет способа обнаружить сбойную задачу? Конечно, у него должно быть что-то, потому что у него есть возможность перезапустить сбойные задачи!

...