Я работаю над скриптом PowerShell для отправки электронной почты, а некоторые параметры могут содержать специальные символы, такие как% и &.Параметры PowerShell со специальными символами
powershell.exe .\sendmail.ps1 -to "[email protected]" -body "Special character & causing trouble." -subject 'PowerShell email'
Это дает следующее сообщение об ошибке:
Ampersand not allowed. The & operator is reserved for future use; use "&" to pass ampersand as a string.
+ CategoryInfo : ParserError: (:) [], ParentContainsErrorRecordException
+ FullyQualifiedErrorId : AmpersandNotAllowed
Я пытался уйти от & с `. Но параметр все равно не будет правильно включен в скрипт.
Я ищу способ убедиться, что параметры будут правильно переданы скрипту, включая специальные символы. Я думаю об использовании кодированного кода или, возможно, размещении параметров в XML-файле.
Любые предложения приветствуются.
Вот сценарий, я использую:
param (
[string]$body = "",
[string]$subject = $(throw "-subject is required."),
[string]$attachment = "",
[string]$to = ""
)
Try
{
$o = [Runtime.InteropServices.Marshal]::GetActiveObject("Outlook.Application")
}
Catch
{
$o = New-Object -com Outlook.Application
}
$mail = $o.CreateItem(0)
$mail.subject = "Auto Build Test"
$mail.body = $body
#for multiple email, use semi-colon ; to separate
$mail.To = $to
$mail.Attachments.Add($attachment)
$mail.Display(0)
Вау, это на самом деле работает! Даже с другими специальными символами. По-видимому, мне не хватает «оператора вызова», –