1

我正在使用 Powershell v2.0 中的 Send-MailMessage 功能我正在使用附件的变量,因为并不总是会发送附件。如果变量中没有附件(文件位置),我会收到一个错误,否则它会起作用。我如何设置 Send-MailMessage 功能以输出附件,而在其他时候却没有失败。

Send-MailMessage -BodyAsHtml –From Monitoring@CorporateActions -Priority $Priority –To "steven.meadows@dionglobal.eu" -Attachments $IDCSwiftLogFileAttachment,$SecurityLogFileAttachment, $ClientTypeLogFileAttachment –Subject “Corporate Actions Overnight Processing” –Body "<b><u> Download Status: </u></b> <br><br> $SWIFTDownloadErrorMessage $SecurityDownloadErrorMessage $ClientDownloadErrorMessage $HoldingDownloadErrorMessage $CLISLOOKDownloadErrorMessage $SWIFTDownloadSuccessMessage $SecurityDownloadSuccessMessage $ClientDownloadSuccessMessage $HoldingDownloadSuccessMessage $CLISLOOKDownloadSuccessMessage <b><u> X-Gen Processing Status: </u></b> <br><br> $SWIFTXGenNoInputMessage $SecurityXGenNoInputMessage $ClientXGenNoInputMessage $HoldingXGenNoInputMessage $CLISLOOKXGenNoInputMessage $IDCSwiftXGenSuccessMessage $SecurityXGenSuccessMessage $ClientXgenSuccessMessage $HoldingXgenSuccessMessage $ClientTypeXGenSuccessMessage $IDCSwiftXgenErrorMessage $SecurityXgenErrorMessage $ClientXgenErrorMessage $HoldingXgenErrorMessage $ClientTypeXGenErrorMessage”  –SmtpServer smtp.investmaster.com
4

2 回答 2

3

您可以使用“splat”参数:{parameter name, parameter value} 的散列以避免Attachments在不需要时传递参数:

$attachments = @()
if ($IDCSwiftLogFileAttachment) {
  $attachments += $IDCSwiftLogFileAttachment
}
# Repeat for each potential parameter

$params = @{}
if ($attachments.Length -gt 0) {
  $params['Attachments'] = $attachments
}

Send-MailMessage @params -BodyAsHtml –From Monitoring@CorporateActions -Priority $Priority # Other parameters

(在 PowerShell V2 中添加了使用哈希表传递参数的功能。)

于 2013-01-28T11:30:25.907 回答
0

假设您编写了函数,最简单的方法是将附件的变量放在最后一个 posh 将接受离开,如果它是函数调用中的最后一个

它可能不花哨或不正确,但我一直在使用这种方法和我写了几年的电子邮件功能,现在没有问题

于 2013-09-04T03:47:14.637 回答