Отправка почты

  • Михаил
  • 12 мин. на прочтение
  • 153
  • 13 Dec 2015
  • 13 Dec 2015

Возникла задача написания скрипта для системы мониторинга, который бы в случае наступления некого события отправлял почтовое сообщение ответственному лицу. Так как в последнее время все чаще приходится использовать  скрипты на PowerShell, то и скрипт отправки почты я решил реализовать именно на нем.  Этот небольшой скрипт PowerShell отправляет e-mail письмо определённому адресату, указанному в его коде. Данный скрипт используется в самописной системе мониторинга определенной не майкрософтовской службы, запущенной на Windows Server 2008. В случае, если служба остановиться, то в техподдержку тут же отправляется письмо с оповещением о проблеме. Мой PowerShell код выглядит следующим образом:

$EmailFrom = “server2008@winitpro.ru”
$EmailTo = “support@winitpro.ru”
$Subject = “Check service at your Windows Server 2008 NOW”
$Body = “Monitoring service is stop!!”
$SmtpServer = “smtp.winitpro.ru”
$smtp = New-Object net.mail.smtpclient($SmtpServer)
$smtp.Send($EmailFrom, $EmailTo, $Subject, $Body)

При использовании скриптов на PowerShell  есть ряд ограничений. По соображениям безопасности скрипт PowerShell нельзя запустить, просто дважды щелкнув по файлу с расширением.PS1.  Поэтому, если вы хотите запустить скрипт PowerShell   из планировщика заданий или еще каким-то автоматизированным способом, то можно создать скрипт VBS, который в свою очередь будет вызывать скрипт на PowerShell:

Set objShell = CreateObject(“WScript.Shell”)
objShell.Run(“powershell.exe c:\script\send_email.ps1>”)

В итоге у вас должны получится два файла: один содержит vbs код (расширение.VBS ), во втором находится PowerShell  код отправки почты (расширение .PS1 ).

В том случае, если вы используете Windows Server 2008, не забудьте включить функцию поддержки PowerShell, иначе скрипты PS работать не будут.