Я установил запланированную задачу на Windows 2008 Server с двумя действиями. Первое действие - запустить приложение, которое подключается к базе данных SQL и генерирует файлы XML. Второе действие - запустить сценарий Powershell. При условии, что задача запускается правильно, сценарий просто отправляет почтовое сообщение о том, что задача запущена, и прикрепляет последний файл журнала, созданный приложением для извлечения данных.
Если запланированная задача не запускается (это не было вчера вечером, а результат последнего запуска показал, что это произошло потому, что «Экземпляр этой задачи уже запущен»), сценарий Powershell не запускается, поэтому мы не получаем электронное письмо. Это быстрый индикатор того, что задача не запущена, однако я бы хотел, чтобы сценарий Powershell возвращал результат последнего выполнения из планировщика задач, если задача не выполняется (хотя каждый раз будет нормально). Я новичок в Powershell, и я только поцарапал им поверхность, так возможно ли это, или я спрашиваю о невозможном? Есть ли другой, очевидно очевидный способ сделать это? Должен ли я просто иметь запланированную задачу с одним действием для запуска сценария Powershell, который запускает приложение и запускает уведомление по электронной почте с подробностями журнала / последнего запуска?
Я нашел способ добиться этого. Во первых я нашла эту статью Мониторинг последнего результата запланированных задач в Windows. Он содержал сценарий, написанный на Perl, о том, как получить результат последнего запуска запланированной задачи.
Я начал преобразовывать его в Powershell, и вот что у меня получилось $taskName = "ETL"
$result = (schtasks /query /FO LIST /V /TN $taskName | findstr "Result")
$result = $result.substring(12)
$lastResult = $result.trim()
Затем я просто вставляю значение в электронное уведомление.