63

У меня есть автоматический скрипт, который загружает резервные копии с моего сайта на мой локальный компьютер. Этот сценарий может потерпеть неудачу; как только мой сервер не работал, в другой раз я случайно переместил свой скрипт.

Как заставить планировщик заданий Windows сообщать мне, что сценарий не работает (или не запускается / не найден)?

Мне все равно, появляется ли приглашение, электронное письмо или что-то, что появляется на моем рабочем столе. Я хочу получать уведомления, если что-то пойдет не так. На моем сервере crontab пишет мне об ошибках - и это здорово. Я хочу что-то подобное на моем компьютере с Windows 7.

3 ответа3

85

Когда запланированное задание не запускается, событие записывается в журнал событий TaskScheduler :

Примечание. Журнал планировщика заданий находится в (в разделе «Администрирование»).

 Computer Management
    System Tools
       Event Viewer
          Application and Services Logs
             Microsoft
                Windows
                   Task Scheduler
                      Operational

Windows позволяет запускать запланированные задачи, когда происходят различные события, например:

  • время суток
  • запуск системы
  • Логин пользователя
  • событие записывается в журнал событий

Вооружившись этими знаниями, вы можете создать запланированное задание, которое будет запускаться при сбое запланированного задания:

Действие Запланированное задание в то может быть установлен на то , что посылает вам предупреждение - в выборе методов (например , вызывает отключение). Возможно, вы просто захотите отправить электронное письмо:

Вот как Windows обрабатывает все. Вы можете увидеть множество диагностических задач, которые запускаются при появлении события в журнале. например, когда обнаружен конфликт IP-адресов, событие записывается в журнал:

  • Журнал: Система
  • Источник: Tcpip
  • Код события: 4198

Запланированное задание запускается в этом событии и запускает программу, чтобы сообщить вам об этом и исправить это. Имейте в виду, что идентификатор события не относится только к одной задаче. Любая задача, которая генерирует событие 203 - Действие не удалось запустить, вызовет эту задачу.

10

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

$ScheduledTaskName = "Hans\Backup"
$Result = (schtasks /query /FO LIST /V /TN $ScheduledTaskName  | findstr "Result")
$Result = $Result.substring(12)
$Code = $Result.trim()

If ($Code -gt 0) {
    $User = "mymail@gmail.com"
    $Pass = ConvertTo-SecureString -String "myPassword" -AsPlainText -Force
    $Cred = New-Object System.Management.Automation.PSCredential $User, $Pass
################################################################################

$From = "Alert Scheduled Task <mymail@gmail.com>"
$To = "Me Gmail <mymail@gmail.com>"
$Subject = "Scheduled task 'Backup' failed"
$Body = "Error code: $Code"
$SMTPServer = "smtp.gmail.com"
$SMTPPort = "587"

Send-MailMessage -From $From -to $To -Subject $Subject `
-Body $Body -SmtpServer $SMTPServer -port $SMTPPort -UseSsl `
-Credential $Cred
}
7

Посмотрите на PushMon. Вы можете создать URL PushMon, который будет вызываться в конце вашего скрипта. Если ваш сценарий не запускается из-за того, что сервер не работает или сценарий был перемещен, вы получите уведомление. Вы можете получить уведомление по электронной почте, SMS, телефонный звонок, IM и Twitter. Это будет работать для любой операционной системы. Это похоже на Pingdom, но для скриптов и фоновых задач.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .