Я не могу отправить несколько вложений с помощью командлета Send-MailMessage
, , если эти файлы находятся в отдельных каталогах .Я могу отправить один файл, я могу отправить другой, я могу отправить оба Если они находятся в одном каталоге , но не если они находятся в разных каталогах.
Файл / папкивыглядит так:
C:\Scripts\Folder\test.txt
C:\Scripts\Folder\Logs\log.txt
Я указываю эти файлы как вложения, создавая массив следующим образом:
$attachments = @("C:\Scripts\Folder\test.txt","C:\Scripts\Folder\Logs\log.txt")
Я использую PowerShell 5.1 и проверил это на обоих Windows Server2012 R2 и Windows 10 v1803.
$ PSVersionTable на Windows Server 2012 R2:
Name Value
---- -----
PSVersion 5.1.14409.1018
PSEdition Desktop
PSCompatibleVersions {1.0, 2.0, 3.0, 4.0...}
BuildVersion 10.0.14409.1018
CLRVersion 4.0.30319.42000
WSManStackVersion 3.0
PSRemotingProtocolVersion 2.3
SerializationVersion 1.1.0.1
$ PSVersionTable на Windows 10 1803:
Name Value
---- -----
PSVersion 5.1.17134.407
PSEdition Desktop
PSCompatibleVersions {1.0, 2.0, 3.0, 4.0...}
BuildVersion 10.0.17134.407
CLRVersion 4.0.30319.42000
WSManStackVersion 3.0
PSRemotingProtocolVersion 2.3
SerializationVersion 1.1.0.1
Вот полный текстскрипт для отправки сообщения:
# Credentials
$username = "user@domain.com"
$password = ConvertTo-SecureString -String "password" -AsPlainText -Force
$cred = New-Object -TypeName System.Management.Automation.PSCredential -ArgumentList $username,$password
# Attachments
$attachments = @("C:\Scripts\Folder\test.txt","C:\Scripts\Folder\Logs\log.txt")
Send-MailMessage -To "Recipient <recipient@domain.com>" -Subject "Subject Line" -Body "Body text" -SmtpServer smtp.domain.com -Attachments $attachments -Credential $cred -From "Sender <user@domain.com>" -Port 587 -Priority High -UseSsl
Нет сообщений об ошибках, и сообщение отправляется и доставляется с первым вложением .Если я удаляю первый файл из массива, второй файл (файл в нижнем каталоге) отправляется.Если я перемещаю второй файл в тот же каталог, что и первый файл, оба отправляются просто отлично.Я искал все выше и ниже ответ на вопрос, почему это может происходить, но я не могу найти ответ относительно вопроса о том, что несколько каталогов поставляются для вложений.В справке для Send-MailMessage также ничего не указано относительно нескольких каталогов.
Я также пытался указывать файлы вложений разными способами.Я попытался:
- Добавление FullName каждого файла к своей собственной переменной и сделал
$attachments
массив этих переменных - Используя
Get-ChildItem -Recurse | Where-Object {($_.Name -eq "test.txt") -or ($_.Name -eq "log.txt")} | Send-MailMessage
Ничто из этого не работает, если оба файла не находятся в одном каталоге.Может кто-нибудь помочь объяснить, почему это так или показать мне, где я ошибся?Я знаю, что есть много обходных путей, но я бы хотел решить эту конкретную проблему.