У меня есть единственный мультиролевой сервер Exchange 2010 и потребность выполнить сценарий Powershell в ежемесячном расписании.
И я действительно хотел бы отправить отчет по электронной почте почтовому ящику некоторой локальной компании к концу задачи.
Я создал сервисную учетную запись с необходимыми полномочиями и записал сценарий Powershell, это делает все прекрасное, когда выполнено, поскольку сервисная учетная запись - кроме электронной почты сообщает о части.
Добавление IP моего Exchange Server к анонимно позволенному Получает коннектор, разве звучат, не исправляется мне, возможно, существует вид лучшей практики, чтобы сделать это?
Любое мнение очень ценится!
ОБНОВЛЕНИЕ:
Что касается почтовой части сценария, обычно я использую Сеть.NET. Почта. MailMessage возражают как это:
$SmtpServer = "exchangeserver.corp.company.com"
$Msg = New-Object Net.Mail.MailMessage
$Smtp = New-Object Net.Mail.SmtpClient($SmtpServer)
$Msg.From = "svc_exchangeservice@company.com"
$Msg.ReplyTo = "alerts@company.com"
$Msg.To.Add("alerts@company.com")
$Msg.Subject = "Monthly script execution report"
$Msg.Body = "Everything's ok, some statistics etc."
$Smtp.Send($Msg)
Когда я использую этот код, Exchange Server отвечает "Недоступным сервисом". Мне это имеет смысл, так как существует, не Получают настроенные коннекторы. Стандарт Send-MailMessage
Команда Powershell дает тот же результат, таким образом, проблема не с кодом, на самом деле это хорошо работает на серверах не-Exchange.
В настоящее время я имею три, Получают коннекторы:
Таким образом, я ищу хороший-и-безопасный способ заставить его работать, заранее спасибо!
Решение довольно простое, имея пароль для ExchangeServiceAccount в качестве переменной SecureString $ExchangeServicePassword:
# Mail server $SmtpServer = "mail.company.com" # .NET object MailMessage $Msg = New-Object Net.Mail.MailMessage # .NET object SMTP server and SMTP authentication parameters $Smtp = New-Object Net.Mail.SmtpClient($SmtpServer, 587) $Smtp.Credentials = New-Object -TypeName System.Management.Automation.PSCredential -ArgumentList "ExchangeServiceAccount", $ExchangeServicePassword $Smtp.EnableSsl = $true # Email structure $Msg.From = "exchangeserviceaccount@company.com" $Msg.ReplyTo = "alerts@company.com" $Msg.To.Add("alerts@company.com") $Msg.Subject = "Subject" $Msg.Body = "Some text" $Msg.SubjectEncoding = [System.Text.Encoding]::UTF8 $Msg.BodyEncoding = [System.Text.Encoding]::UTF8 # Send email $Smtp.Send($Msg)