Как заставить TaskScheduler завершиться с ошибкой, когда задача возвращает результат, отличный от 0

16

У меня есть задача резервного копирования, которая завершается с ненулевым результатом, но Планировщик заданий говорит, что она выполнила задачу правильно.

Есть ли способ сообщить планировщику задач, что задача не удалась?

Пабло Монтилья
источник
Привет, Пабло, нам нужно больше информации. Например, как / что запускает планировщик задач? Пакетный файл, EXE, что-то еще? Это резервная копия Windows, с которой вы имеете дело? Что вы пробовали?
Ƭᴇcʜιᴇ007
1
Я использую программу wbadmin для запуска резервного копирования, но у меня та же проблема с командным файлом с одним оператором 'exit 1'. TaskScheduler содержит код ошибки, но сообщает о том, что задача успешно выполнена.
Пабло Монтилья
То есть сам планировщик заданий показывает ненулевой код выхода?
Ƭᴇcʜιᴇ007
3
Да, но сообщает о том, что задание выполнено успешно. Я понимаю, что, возможно, он сообщает, что может выполнить задачу, а не что сама задача не удалась, но не кажется очень полезной.
Пабло Монтилья
См. Также stackoverflow.com/questions/16969500/…
MiFreidgeim SO-перестать быть злым

Ответы:

4

Если планировщик заданий успешно запускает задание и запускаемая программа завершается, то с точки зрения планировщика заданий это был успех (т. Е. Ничего плохого не произошло, как неуспешные учетные данные пользователя при запуске программы).

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

Какого рода уведомление об ошибке вы пытаетесь получить? Вы делаете обзор вручную, но просто пытаетесь сделать ошибку более заметной? Или у вас другая программа мониторинга на наличие ошибок?

Шеннон Вагнер
источник
2
Тем не менее, я думаю, что неправильно отказывать и не сообщать (или, по крайней мере, давать возможность сообщить) о неудаче выполненной задачи. Благодарность!
Пабло Монтилья
1
Я согласен, что было бы полезно, если бы планировщик задач мог определить код выхода и отправить электронное письмо на основе результата. Но я не верю, что в этом есть такая особенность. Вы пытаетесь получить уведомление по электронной почте? Может быть, вы могли бы включить запуск wbadmin в скрипт VBScript или PowerShell, который бы определял код выхода и что-то с ним делал?
Шеннон Вагнер
1
Да, это возможно. Это тоже работает ...;) Надеюсь, MS подумает, что это что-то полезное, чтобы добавить в Windows 8.
Пабло Монтилья
6
Это поразительно для меня - в планировщике заданий есть все эти опции для настройки перезапуска действия в случае его сбоя, но даже не проверяется, возвращает ли действие код ошибки. Заставляет меня задуматься, что же на самом деле представляет собой «провал» для Планировщика заданий.
Маккенир
В свете этого ответа я должен спросить: запускает ли планировщик задач повторную попытку на основе кода выхода?
jpmc26
5

Можно «перезапустить» задачу, если она не удалась.

  1. Используйте следующий код в пакетном скрипте для создания события системной ошибки:

    eventcreate / ID 100 / SO "Ваше имя сценария" / L APPLICATION / T ERROR / D "Причина вашего отказа"

  2. Создайте новую задачу с триггером, который отслеживает системные события и фильтрует для категории и идентификатора, который вы только что добавили в пакет. Действие этой задачи - снова партия. Эту задачу следует отложить на одну минуту, чтобы один и тот же пакет не запускался дважды!

Будьте осторожны, чтобы не создавать бесконечный цикл.

Надеюсь, это поможет!

schulle877
источник
Мне нравится такой подход :)
DavidPostill