Статья размещена автором Бетке Сергей Сергеевич

Отчёт от скрипта 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 и не только…


Опубликовать комментарий

XHTML: Вы можете использовать следующие HTML теги: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>

Tags Связь с комментариями статьи:
RSS комментарии
Обратная ссылка