允许在Exchange服务器上执行Powershell脚本发送邮件 – 最佳实践?

我有一个多angular色Exchange 2010服务器,需要按月计划执行Powershell脚本

我真的想在任务结束时通过电子邮件发送一份报告给当地公司的邮箱。

我创build了一个具有所需权限的服务帐户,并且编写了一个Powershell脚本,当以服务帐户运行时,除了电子邮件报告部分之外,这些脚本都做得很好。

将我的Exchange服务器的IP添加到匿名允许的接收连接器听起来并不合适,也许有一种最佳做法来做到这一点?

任何意见都非常感谢!

更新:

至于脚本的邮件部分,通常我使用这样一个.NET Net.Mail.MailMessage对象:

$SmtpServer = "exchangeserver.corp.company.com" $Msg = New-Object Net.Mail.MailMessage $Smtp = New-Object Net.Mail.SmtpClient($SmtpServer) $Msg.From = "[email protected]" $Msg.ReplyTo = "[email protected]" $Msg.To.Add("[email protected]") $Msg.Subject = "Monthly script execution report" $Msg.Body = "Everything's ok, some statistics etc." $Smtp.Send($Msg) 

当我使用这个代码的时候,Exchange服务器会回答“服务不可用”。 对我来说这是有道理的,因为没有configuration接收连接器。 标准Send-MailMessage Powershell命令提供相同的结果,所以问题不在代码中,实际上在非Exchange服务器上工作正常。

目前我有三个接收连接器:

  • 一个用于FQDN的外部邮件mail.company.com接受端口25上的连接
  • 一个用于在标准SSL端口587上使用FQDN exchangeserver.corp.company.com的内部Exchange客户端
  • 一个用于通过Exchange发送邮件的本地服务器列表,而不通过端口25上的FQDN exchangeserver.corp.company.com进行身份validation(不是一个完美的解决scheme,我不希望将我的Exchange服务器的IP添加到列表中)

所以我正在寻找一个安全可靠的方法,使其工作,在此先感谢!

解决scheme非常简单,将ExchangeServiceAccount的密码设置为SecureString $ ExchangeServicePasswordvariables:

  #邮件服务器
 $ SmtpServer =“mail.company.com”
 .NET对象MailMessage
 $ Msg =新对象Net.Mail.MailMessage
 #.NET对象SMTP服务器和SMTPauthentication参数
 $ Smtp = New-Object Net.Mail.SmtpClient($ SmtpServer,587)
 $ Smtp.Credentials = New-Object -TypeName System.Management.Automation.PSCredential -ArgumentList“ExchangeServiceAccount”,$ ExchangeServicePassword
 $ Smtp.EnableSsl = $ true
 #电子邮件结构
 $ Msg.From =“[email protected]”
 $ Msg.ReplyTo =“[email protected]”
 $ Msg.To.Add( “[email protected]”)
 $ Msg.Subject =“主题”
 $ Msg.Body =“一些文字”
 $ Msg.SubjectEncoding = [System.Text.Encoding] :: UTF8
 $ Msg.BodyEncoding = [System.Text.Encoding] :: UTF8
 # 发电子邮件
 $ Smtp.Send($消息)