Powershell, экранирующий специальные символы в строке HTML: Ampersand - PullRequest
0 голосов
/ 03 декабря 2018

Я пишу небольшой скрипт для отправки писем.Он принимает 3 параметра, тему, текст HTML и получателя.

Тело HTML читается из файла в строку.Проблемы возникают, когда код HTML содержит специальные символы, кавычки и т. Д., Хотя HTML кодируется перед передачей в сценарий.Powershell выдает эту ошибку:

"Символ амперсанда (&) недопустим. Оператор & зарезервирован для использования в будущем; заключите амперсанд в двойные кавычки (" & "), чтобы передать его какчасть строки. "

test.ps1

$theBody = Get-Content ".\welcomeMessageP1.htm" ## HTML !!!
$encodedBody = [System.Net.WebUtility]::HtmlEncode($theBody)

$command = ".\sendmail.ps1 –subject 'test email' –body '$encodedBody' -recipient 'someuser@mydomain.com' "

Invoke-Expression $command

1 Ответ

0 голосов
/ 04 декабря 2018

Invoke-Expression считается вредным .Не используйте его.Вам все равно это не нужно.Просто запустите командную строку как есть (минус кавычки вокруг переменной $encodedBody, конечно).

$theBody = Get-Content '.\welcomeMessageP1.htm'
$encodedBody = [Net.WebUtility]::HtmlEncode($theBody)

.\sendmail.ps1 –subject 'test email' –body $encodedBody -recipient 'someuser@mydomain.com'
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...