我创建了一个脚本来配置 Lync 用户,需要通过电子邮件发送新配置的重要详细信息(例如分配的 LineURI)。此外,任何错误都需要发送(当然会被一些友好的错误消息弄得一团糟:))。
所以我创建了一些包含所有相关数据的 CSV。
然后我创建了一个函数:
Function Send-Email ($attachArray) {
# Get a list of to addresses
$toAddresses = "foo@corp.local","bar@corp.local"
# Process replacments
Replace-EmailMasks
# Send conditionaly
Switch ($attachArray) {
$null {
Send-MailMessage -SmtpServer "internalrelay.corp.local" `
-From "test@andylab.local" -To $toAddresses `
-Subject "There should really be something more informative here" `
-BodyAsHTML $SCRIPT:htmlBody
}
Default {
Send-MailMessage -SmtpServer "internalrelay.corp.local" `
-From "test@andylab.local" -To $toAddresses `
-Subject "There should really be something more informative here" `
-BodyAsHTML $SCRIPT:htmlBody
-Attachments $attachArray
}
}
}
这是我调用它的方式:
# Logic, then send
If (($npSuccess -gt 0) -AND ($errorsExist -gt 0)) {
# Attaching both
# Heres the summary paragraph
$SCRIPT:customSummary = '<p>Success and errors :|</p>'
# Now I'm sending it.
Send-Email "$($tempPlace.fullname)\NewProviSsion_Output.csv","$($tempPlace.fullname)\Errors_Output.csv"
} ElseIf ($npSuccess -gt 0) {..} # output-generating Success
ElseIf ($errorsExist -gt 0) {..} # Failed somewhere
Else {..} # no output-generating Success, no overall fails
现在这行得通;电子邮件看起来不错,应该发给谁,附加文件等。
问题是:
无论我在$attachArray中指定多少文件,这就是发送了多少电子邮件。电子邮件都完全相同,多次发送给同一个人。
就好像我正在这样做:
ForEach ($item in $attachArray) {
Send-Email "$($tempPlace.fullname)\NewProviSsion_Output.csv","$($tempPlace.fullname)\Errors_Output.csv"
}
除了我不是..
为了澄清我的目标,我希望将电子邮件仅发送给 $toAddresses 中的所有人一次。
谁能告诉我这里发生了什么?
也许我星期一早上过得很糟糕..