Начиная с Windows Server 2012, создание задачи на отправку электронных писем в Event viewer является deprecated. Единственным вариантом остаётся запуск программы или скрипта, который будет отправлять нам письма.
Создать задачу в планировщике можно выбрав нужное событие в Event viewer и кликнув по Attach task to this event
в правой части окна.
При попытке же выбрать этот вариант, появляется ошибка "The task definition uses a deprecated feature":
Используем в качестеве workaround командлет Send-MailMessage в PowerShell, который отправляет почту используя SMTP:
Send-MailMessage `
-SmtpServer mx.example.com `
-To admin@example.com `
-From server@example.com `
-Subject "Smth happened" `
-Body "Check it out"
Если у вас в сети нет почтового сервера, в качестве SmtpServer
можно указать почтовый сервер адресата. Узнать его можно командой nslookup -type=mx example.com
, где example.com
- домен адресата после @
.
Обратите внимание, что в качестве приветствия EHLO
, будет отправлено имя компьютера, а некоторые SMTP-серверы не принимают письма с HELO/EHLO, не содержащими полное доменное имя или IP адрес (возвращают ошибку 550-HELO/EHLO must contain your FQDN or IP literal
).
Однако, по-умолчанию, исполнение .ps1
файлов запрещено (выполняется действие по-умолчанию - открыть в Блокноте). Чтобы исправить это, можно изменить следующую групповую политику: Computer Configuration > Policies > Administrative Templates > Windows Components > Windows PowerShell > Turn on Script Execution
.
Если делать это нет желания или возможности, можно прибегнуть к следующей хитрости: запускать powershell.exe
, передавая наш скрипт в аргументе -Command
.
То есть, указать C:\Windows\System32\WindowsPowerShell\v1.0\powershell.exe
в качестве запускаемой программы, а -Command 'Send-MailMessage -SmtpServer mx.example.com -To admin@example.com -From server@example.com -Subject "Smth happened" -Body "Check it out"'
в качестве её аргументов: