Зробіть так, щоб планувальник завдань Windows попереджав мене про помилку


65

У мене є автоматизований сценарій, який перетягує резервні копії з мого веб-сайту на мій локальний комп'ютер. Цей сценарій може вийти з ладу; як тільки мій сервер був відключений, іншим разом я випадково перемістив свій сценарій.

Як змусити планувальник завдань Windows повідомити мені про те, що сценарій не працює (або не працює / не знайдений)?

Мені все одно, чи з’явиться підказка, повідомлення електронної пошти чи щось, що з’являється на моєму робочому столі. Я хочу, щоб мене повідомили, якщо щось піде не так. На моєму сервері crontab надсилає мені електронні повідомлення про помилки - що чудово. Я хочу щось подібне на своєму локальному комп'ютері Windows 7.


знайшли ідентифікатори подій планувальника завдань принаймні mnaoumov.wordpress.com/2014/05/15/task-scheduler-event-ids

Відповіді:


87

Коли заплановане завдання не вдалося запустити, подія записується в журнал подій TaskScheduler :

Примітка. Журнал планування завдань розташований за адресою (в розділі Адміністративні інструменти)

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

введіть тут опис зображення

Windows дозволяє запускати заплановані завдання, щоб початись, коли трапляються різні події, наприклад:

  • час дня
  • запуск системи
  • вхід користувача
  • подія, записана в журналі подій

Озброївшись цими знаннями, ви можете створити заплановане завдання, яке виконується, коли ваше заплановане завдання виходить з ладу:

введіть тут опис зображення

Після цього запланованої дії може бути встановлено те, що надсилає вам сповіщення - у виборі методів (наприклад, викликає відключення). Ви можете просто захотіти, щоб він надіслав електронний лист:

введіть тут опис зображення

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

  • Журнал: Система
  • Джерело: Tcpip
  • Ідентифікатор події: 4198

Заплановане завдання спрацьовує на цій події та запускає програму, щоб розповісти про неї та виправити її. Майте на увазі, що ідентифікатор події не характерний лише для одного завдання. Будь-яке завдання, що генерує подію 203 - Дія не вдалося запустити, спричинить це завдання.


2
Ви отримуєте ідентифікатор події з журналу подій (203 та 103). Ви можете побачити ідентифікатори події на скріншоті (203 та 103). Або я можу сказати вам ідентифікатори події: 203 та 103.
Ян Бойд,

5
Що ви робите, якщо друге завдання провалиться!?!?
Вільям Джексон

3
@WilliamJackson Створіть подію, яка закриває машину. Хтось точно буде попереджений про проблему.
Ян Бойд

11
Насправді, якщо 2-е завдання не вдасться, воно запустить 2-е завдання, яке не вдасться, яке запустить 2-е завдання, яке не вдасться, і запустить 2-е завдання, яке ... ви отримаєте ідею. Я щойно з’ясував це важким шляхом = /
Роб Пенридж

6
Це не попереджає вас, якщо завдання не вдалося , лише якщо воно не вдалося запустити . Не зовсім те саме.
jwg

11

Ось мій сценарій, щоб сповістити мене, коли в моєму резервному завданні більше значення, ніж 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
}

Це хороший варіант, оскільки поточна обрана відповідь використовує застарілу функцію Windows.
Джон Харгров

Зауважте, що це спеціально розроблене рішення для користувачів з Windows англійською мовою. Аргумент для ´findstr´ необхідно змінити відповідно до мови користувача, встановленої в Windows.
Eda190

7

Погляньте на PushMon . Ви можете створити URL-адресу PushMon, яка буде викликана в кінці вашого сценарію. Якщо ваш скрипт не запускається через те, що сервер був відключений або скрипт був переміщений, ви отримаєте сповіщення. Ви можете отримувати сповіщення по електронній пошті, SMS, телефонному дзвінку, чату та Twitter. Це буде працювати для будь-якої операційної системи. Це як Pingdom, але для сценаріїв та фонових завдань.


1
Якщо ви додасте його в кінці свого сценарію, а сценарій відсутній (наприклад, переміщено), як слід його називати‽
Боб

3
Оскільки скрипт переміщено та URL-адресу не зателефонували, ви отримаєте сповіщення.
Bienvenido David

1
Спроба відвідати їхній сайт; іронічно, здається, що це вниз ..
Ісаак Кляйнман
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.