Я вже розповідав про те, як можна відправити пошту з командного рядка за допомогою telnet. Тепер постало завдання написання скрипта для системи моніторингу, який би в разі настання певного події відправляв поштове повідомлення відповідальній особі.

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

$ EmailFrom = “server2008@winitpro.ru”
$ EmailTo = “support@winitpro.ru”
$ Subject = “Перевірка служби на вашому Windows Server 2008 ЗАРАЗ”
$ Body = “Послуга моніторингу зупинена !!”
$ SmtpServer = “smtp.winitpro.ru”
$ smtp = Новий об’єкт net.mail.smtpclient ($ SmtpServer)
$ smtp.Send ($ EmailFrom, $ EmailTo, $ Subject, $ Body)

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

Встановити objShell = CreateObject (“WScript.Shell”)
objShell.Run (“powershell.exe c: script send_email.ps1>”)

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

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

Leave a Reply

Your email address will not be published. Required fields are marked *