Позвольте сценарию Powershell, выполняемому на Exchange Server отправлять почту - лучшая практика?

У меня есть единственный мультиролевой сервер 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.

В настоящее время я имею три, Получают коннекторы:

  • один для внешней почты с mail.company.com FQDN, принимающим соединения на порте 25
  • один для внутренних клиентов Exchange с exchangeserver.corp.company.com FQDN на стандартном порте SSL 587
  • и один для списка локальных серверов, кто отправляет почту через Exchange без аутентификации с exchangeserver.corp.company.com FQDN на порте 25 (не идеальное решение и я предпочли бы не добавлять IP моего Exchange Server к списку),

Таким образом, я ищу хороший-и-безопасный способ заставить его работать, заранее спасибо!

1
задан 1 April 2015 в 15:06
1 ответ

Решение довольно простое, имея пароль для 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)
0
ответ дан 4 December 2019 в 07:55

Теги

Похожие вопросы