Я пытаюсь следовать this example, чтобы прикрепить изображения к электронной почте с помощью powershell. Вот часть кода, который ведет себя странно:Как исправить выражение powershell, которое вызывает ошибку позже в коде
if ($DirectoryInfo) {
foreach ($element in $DirectoryInfo) {
$failedTest = $element| Select-Object -Expand name
$failedTests += $failedTest
$failedTestLog = "$PathLog\$failedTest.log"
$logContent = [IO.File]::ReadAllText($failedTestLog)
$imageDir = "$PathLog\$element\Firefox\*"
$imageSearch = Get-ChildItem -Path $imageDir -Include *.png -Recurse -Force
$imageFullname = $imageSearch | select FullName | Select-Object -Expand Fullname
$imageFilename = $imageSearch | Select-Object -Expand name
$imageFilename
$imageFullname
# *** THE FOLLOWING LINE CAUSES THE ERROR ***
$attachment = New-Object System.Net.Mail.Attachment –ArgumentList $imageFullname.ToString() # *** CAUSING ERROR ***
#$attachment.ContentDisposition.Inline = $True
#$attachment.ContentDisposition.DispositionType = "Inline"
#$attachment.ContentType.MediaType = "image/jpg"
#$attachment.ContentId = '$imageFilename'
#$msg.Attachments.Add($attachment)
$outputLog += "
********************************************
$failedTest
********************************************
$logContent
"
}
} else {
$outputLog = '** No failed tests **'
}
# Create the Overview report
$outputSummary = ""
foreach ($element in $scenarioInfo) {
if (CheckTest $failedTests $element) {
$outputSummary += "
$element : FAILED" # *** ERROR LINE ***
} Else {
$outputSummary += "
$element : Passed"
}
}
Если я закомментируйте строку, которая определяет вложение, код работает отлично. Если я использую код, как это, я получаю следующее сообщение об ошибке:
Unexpected token ':' in expression or statement.
At D:\Testing\Data\Powershell\LoadRunner\LRmain.ps1:112 char:11
+ $element : <<<< FAILED"
+ CategoryInfo : ParserError: (::String) [], ParseException
+ FullyQualifiedErrorId : UnexpectedToken
, который относится к линии в нижней части сценария, где он говорит: «ERROR LINE». Что, черт возьми, происходит? Поведение выглядит совершенно нелогичным для меня! Я не понимаю, как заявление, которое не имеет никакого эффекта, может вызвать ошибку в другом месте! В чем проблема и как ее исправить ...?
Также не имеет значения, использую ли я $imageFullname
или $imageFullname.ToString()
в оскорбительной строке.
Каков вывод '$ element'? Вы уверены, что между $ element и точкой с запятой есть пробел? –
Да, я уверен. Кроме того, проблема вызвана линией 'System.Net.Mail.Attachment'. Если я прокомментирую эту строку, код «работает» и не вызывает ошибку. Я также не могу найти документацию об использовании 'ArgumentList' с объектом' Attachment' ... – Alex
В вашем примере кода возникают проблемы, не связанные с вопросом. Цитата на «ERROR LINE» охватывает несколько строк, которые не разрешены в PowerShell без использования здесь строк. – TravisEz13