Хотя я согласен с 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 для этого ..