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 内のすべての人に一度だけメールを送信したいと考えています。
ここで何が起こっているのか、誰か教えてもらえますか?
月曜日の朝が調子悪かっただけかもしれませんが..