Я написал сценарий, который собирает журналы с нескольких серверов, затем зашифровывает их и отправляет по электронной почте. Поскольку получатели этих писем могут отличаться в зависимости от ситуации, я решил использовать пользовательский ввод, а не жесткий код адресов электронной почты. Это то, что у меня есть:Как использовать переменную read-host в аргументе send-mailmessage
$to = '"' + (read-host -prompt "Send to") + '"'
do {
Write-host "Add another recipient?"
$choice = read-host -prompt "[y/n]"
switch ($choice) {
'y'{
$add = ',"' + (read-host -prompt "Send to") + '"'
$to = -Join ($to, $add)
}
}
}
until ($choice -eq 'n')
$issuenum = read-host -prompt "Issue Number (enter if none)"
$title = read-host -prompt "Email Title"
$body = read-host -prompt "Message"
Send-MailMessage -To $to -From "[email protected]" -SMTPServer smtpserver.com -Subject "[$issuenum] $title" -body $body -attachments $attachments
}
Однако при запуске скрипта я получаю следующее сообщение об ошибке:
Send-MailMessage : An invalid character was found in the mail header: '"'.
At C:\PATH\SCRIPT.ps1:431 char:1
+ Send-MailMessage -To $to -From "[email protected]" -SMTPServer ...
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+ CategoryInfo : InvalidType: (:) [Send-MailMessage], FormatException
+ FullyQualifiedErrorId : FormatException,Microsoft.PowerShell.Commands.SendMailMessage
Send-MailMessage : A recipient must be specified.
At C:\PATH\SCRIPT.ps1:431 char:1
+ Send-MailMessage -To $to -From "[email protected]" -SMTPServer ...
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+ CategoryInfo : InvalidOperation: (System.Net.Mail.SmtpClient:SmtpClient) [Send-MailMessage], InvalidOperationException
+ FullyQualifiedErrorId : InvalidOperationException,Microsoft.PowerShell.Commands.SendMailMessage
Когда я показываю значение моего $ к переменной выводит то, что я ожидал увидеть: правильный формат аргумента send-mailmessage -to.
"[email protected]","[email protected]"
Что я делаю неправильно?
Вам нужно пройти, чтобы отправить-MailMessage строку [] массив. [string []] $ recipients = "[email protected]", "[email protected]" –