Wysyłanie poczty z PowerShell

Mówiłem już o tym, jak wysyłać pocztę z wiersza poleceń za pomocą telnetu. Teraz zadanie polegało na napisaniu skryptu dla systemu monitorowania, który w razie zdarzenia wyśle ​​wiadomość e-mail do osoby odpowiedzialnej.

Ponieważ ostatnio coraz częściej konieczne jest używanie skryptów w PowerShell, postanowiłem zaimplementować na nim skrypt wysyłający pocztę. Ten mały skrypt PowerShell wysyła wiadomość e-mail do określonego odbiorcy określonego w jego kodzie. Ten skrypt jest używany w samodzielnie napisanym systemie monitorowania konkretnej usługi innej niż Microsoft działającej w systemie Windows Server 2008. Jeśli usługa się zatrzyma, wówczas do działu pomocy technicznej zostanie wysłana wiadomość techniczna. Mój kod PowerShell wygląda następująco:

$ EmailFrom = „[email protected]
$ EmailTo = „[email protected]
$ Subject = „Sprawdź usługę na swoim Windows Server 2008 TERAZ”
$ Body = „Usługa monitorowania jest zatrzymana !!”
$ SmtpServer = „smtp.winitpro.ru”
$ smtp = Nowy obiekt net.mail.smtpclient ($ SmtpServer)
$ smtp.Send ($ EmailFrom, $ EmailTo, $ Subject, $ Body)

Istnieje kilka ograniczeń korzystania ze skryptów PowerShell. Ze względów bezpieczeństwa nie można uruchomić skryptu PowerShell, klikając dwukrotnie plik .PS1. Dlatego jeśli chcesz uruchomić skrypt PowerShell z harmonogramu zadań lub w inny zautomatyzowany sposób, możesz utworzyć skrypt VBS, który z kolei wywoła skrypt PowerShell:

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

W rezultacie powinieneś otrzymać dwa pliki: jeden zawiera kod VBS (rozszerzenie .VBS), drugi zawiera kod PowerShell do wysyłania poczty (rozszerzenie .PS1).

Jeśli używasz systemu Windows Server 2008, nie zapomnij włączyć funkcji obsługi programu PowerShell, w przeciwnym razie skrypty PS nie będą działać.
Znalazłem kod C ++ przydatny do ukrywania okna Windows: Jak ukryć okno innej osoby.