Как сделать вложение в Send-MailMessage необязательным? - PullRequest
0 голосов
/ 28 июня 2019

Я использую Send-MailMessage в моем скрипте

Send-MailMessage -From 'User01 <user01@fabrikam.com>' -To 'User02 <user02@fabrikam.com>', 'User03 <user03@fabrikam.com>' -Subject 'Sending the Attachment' -Body 'Forgot to send the attachment. Sending now.' -Attachments .\data.csv -Priority High -DeliveryNotificationOption OnSuccess, OnFailure -SmtpServer 'smtp.fabrikam.com'

это прекрасно работает, за исключением случаев, когда файл журнала не может быть создан, таким образом, без вложений, Send-MailMessage не может отправить электронное письмо, потому что вложения нет. Как я могу сохранить переключатель -attachment как часть Send-MailMessage и по-прежнему отправлять электронную почту, даже если вложение каким-то образом не удается?

как то так: -Attachments (mandatory=$false)$attachment

1 Ответ

1 голос
/ 29 июня 2019

Хотя я согласен с avic , что использование сплаттинга - это способ использовать такие командлеты, как Send-MailMessage, которые используют множество параметров, но может быть и другой способ, сохраняя ваш формат в неизменном виде.

Параметр -Attachments имеет тип string [] (массив имен файлов), более того, его можно передать в командлет Send-MailMessage. Пока это массив, командлет выглядит нормально, даже если массив пуст. Вы можете использовать это, чтобы изменить команду, которую вы должны:

# see if the file to attach is there and if not make $attachments an empty array
if (Test-Path -Path '.\data.csv' -PathType Leaf) { $attachments = @('.\data.csv') } else { $attachments = @() }

# pipe the attachments array to the cmdlet
$attachments | Send-MailMessage -From 'User01 <user01@fabrikam.com>' -To 'User02 <user02@fabrikam.com>', 'User03 <user03@fabrikam.com>' -Subject 'Sending the Attachment' -Body 'Forgot to send the attachment. Sending now.' -Priority High -DeliveryNotificationOption OnSuccess, OnFailure -SmtpServer 'smtp.fabrikam.com'

Как я уже сказал, лично я предпочел бы использовать splatting для этого ..

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...