Отправка почты из PowerShell


Я уже рассказывал про то, как можно отправить почту из командной строки при помощи telnet. Теперь возникла задача написания скрипта для системы мониторинга, который бы в случае наступления некого события отправлял почтовое сообщение ответственному лицу.

Так как в последнее время все чаще приходится использовать  скрипты на 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:scriptsend_email.ps1>”)

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

В том случае, если вы используете Windows Server 2008, не забудьте включить функцию поддержки PowerShell, иначе скрипты PS работать не будут.
Мне пригодился код С++, позволяющий скрыть окно windows: How to Hide Another Person’s Window.

Оставьте комментарий

Ваш e-mail не будет опубликован. Обязательные поля помечены *