Невозможно отправить несколько вложений из разных каталогов, используя Send-MailMessage - PullRequest
0 голосов
/ 31 января 2019

Я не могу отправить несколько вложений с помощью командлета 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 также ничего не указано относительно нескольких каталогов.

Я также пытался указывать файлы вложений разными способами.Я попытался:

  1. Добавление FullName каждого файла к своей собственной переменной и сделал $attachments массив этих переменных
  2. Используя Get-ChildItem -Recurse | Where-Object {($_.Name -eq "test.txt") -or ($_.Name -eq "log.txt")} | Send-MailMessage

Ничто из этого не работает, если оба файла не находятся в одном каталоге.Может кто-нибудь помочь объяснить, почему это так или показать мне, где я ошибся?Я знаю, что есть много обходных путей, но я бы хотел решить эту конкретную проблему.

1 Ответ

0 голосов
/ 31 января 2019

Я только что проверил ваш код и воссоздал ту же структуру папок / файлов на моей машине с Windows 10, и все работает так, как ожидалось.
Я получаю электронное письмо, и оба вложения присутствуют.

Что означает, что ваш $PSVersionTable говорит, что у вас PSVersion of PowerShell?
Мой выглядит так:

Name                           Value                                                                                                                                                                                                                             
----                           -----                                                                                                                                                                                                                             
PSVersion                      5.1.17763.134                                                                                                                                                                                                                     
PSEdition                      Desktop                                                                                                                                                                                                                           
PSCompatibleVersions           {1.0, 2.0, 3.0, 4.0...}                                                                                                                                                                                                           
BuildVersion                   10.0.17763.134                                                                                                                                                                                                                    
CLRVersion                     4.0.30319.42000                                                                                                                                                                                                                   
WSManStackVersion              3.0                                                                                                                                                                                                                               
PSRemotingProtocolVersion      2.3                                                                                                                                                                                                                               
SerializationVersion           1.1.0.1        

Это работает под управлением Windows 10 build 1809. Для теста я использовал отправку учетной записи Office 365 черезsmtp.office365.com.

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