9

メールを送信する PowerShell スクリプトを作成していますが、一部のパラメーターに % や & などの特殊文字が含まれている場合があります。

powershell.exe .\sendmail.ps1 -to "user@something.com" -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)
4

2 に答える 2

14

この方法でスクリプトを呼び出してみて、私に知らせてください:

powershell.exe -command "& .\sendmail.ps1 -to user@something.com -body 'Special character & causing trouble.' -subject 'PowerShell email'"
于 2013-09-16T10:00:17.677 に答える