Возможно ли для сценария Powershell вернуть результат последнего запуска из планировщика задач Windows 2008?

Я настроил запланированное задание на Windows 2008 Server с двумя действиями. Первое действие - запустить приложение, которое подключается к базе данных SQL и генерирует XML-файлы. Второе действие - запустить скрипт Powershell. При условии, что задача запускается правильно, скрипт просто отправляет почтовое сообщение о том, что задача запущена, и присоединяет последний файл журнала, созданный приложением для извлечения данных.

Если запланированное задание не запускается (оно не было прошлой ночью, а результат последнего запуска показал, что это произошло из-за того, что "экземпляр этого задания уже запущен") сценарий Powershell не запускается, поэтому мы не получаем электронное письмо. Это быстрый индикатор того, что задача не была запущена, однако мне бы хотелось, чтобы скрипт Powershell возвращал результат последнего запуска из планировщика задач, если задача не выполняется (хотя каждый раз будет в порядке). Я новичок в Powershell, и я только поцарапал поверхность, так что это возможно, или я спрашиваю о невозможном? Есть ли другой, явно очевидный способ сделать это? Должен ли я иметь запланированное задание с одним действием для запуска сценария Powershell, который запускает приложение и запускает уведомление по электронной почте с подробностями журнала / последнего запуска?

1 ответ

Решение

Я нашел способ добиться этого. Сначала я нашел эту статью Мониторинг последнего результата запланированных задач в Windows. Он содержал скрипт, написанный на Perl, о том, как получить результат последнего запуска запланированной задачи.

Я приступил к преобразованию его в Powershell, и это то, что я получил $taskName = "ETL" $result = (schtasks /query /FO LIST /V /TN $taskName | findstr "Result") $result = $result.substring(12) $lastResult = $result.trim()

Затем я просто вставляю значение в уведомление по электронной почте.

Другие вопросы по тегам