Отчёт от скрипта powershell по почте
В любом случае, когда мы создаём скрипты, работа которых подразумевается по расписанию, целесообразно обеспечить отправку отчётов по результатам действия скриптов. Запись в текстовые логи — это хорошо, в журнал событий лучше. Но отчёт по почте удобнее.
Отправка отчёта средствами Power Shell проблем не представляет:
[Net.Mail.SmtpClient]$SMTPclient = new-object Net.Mail.SmtpClient("localhost") $SMTPclient.Send( ` $emailFrom, ` $emailTo, ` "Обнаружены проблемы со входящей почтой контрольных контрагентов", ` @" При проверке журналов SMTP сервера обнаружены потенциально проблемные SMTP сессии в части входящей почты от контрольных контрагентов. Проблемы обнаружены для следующих доменов и адресов: $($inputMailErrors.facts | % {$_.FromDomain} | where {$_ -ne ""} | select -unique | %{ $domain = $_ "`n" + $domain $inputMailErrors.facts | where {$_.FromDomain -eq $domain} |% {$_.FromAddr} | where {$_ -ne ""} | select -unique | %{"`n`t"+$_} }) Выдержка из журнала SMTP сервера: $($inputMailErrors.facts | % { $_.sessionLogFormatted }) С Уважением, Скрипт: $($myinvocation.mycommand.path) "@ ` )
Указанный способ — самый простой. Но и самый ограниченный. Объекты представляют куда больше возможностей, мы использовали лишь толику. О дополнительных возможностях — в MSDN. Примеры последуют здесь далее.
А вот и пример — посылаем вложение.
$SmtpClient = new-object system.net.mail.smtpClient $smtpclient.Host = "localhost" $Credentials = new-object System.Net.networkCredential $Credentials.domain = «» # пароль от ящика почты от которого отправляем емаил $Credentials.UserName = "логин1" $Credentials.Password = "пароль1" $SMTPClient.Credentials = $Credentials $msg = new-object Net.Mail.MailMessage $msg.from = «источник@почта» $msg.To.Add(«таргет@почта») $msg.subject="тема" $msg.body="текст" $att = new-object Net.Mail.Attachment(«c:\scripts\pack.rar») $msg.Attachments.Add($att) $smtpclient.Send($msg)
Статей по данному вопросу написано масса. Некоторые примеры: http://blog.wadmin.ru/2010/02/send-reports-via-powershell/ .
Позднее планирую установку полей заголовка письма, полезных при обработке писем в Outlook и не только…
RSS комментарии
Обратная ссылка