2016-05-30 1 views
0

私はpowershellを使って電子メールに画像を添付するためにthis exampleに従おうとしています。ここで奇妙な振る舞いコードの一部は次のとおりです。コードの後ろにエラーが発生する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()を使用しても問題ありません。

+0

'$ element'の出力は何ですか? $ elementとセミコロンの間に空白がありますか? –

+0

はい私は確信しています。また、問題は 'System.Net.Mail.Attachment'行によって引き起こされます。この行をコメントアウトすると、コードは動作し、エラーは発生しません。私はまた、その 'Attachment'オブジェクトで' ArgumentList'を使用することに関するドキュメントを見つけることができません... – Alex

+0

あなたのコードサンプルは、質問に無関係の問題を持っているようです。 "ERROR LINE"の引用符は、ここの文字列を使用せずにPowerShellで使用できない複数の行にまたがっています。 – TravisEz13

答えて

0

定義Arrayなど$outputSummary:セミコロンをエスケープします

"$element` : FAILED" 

逆引用符で"$element : FAILED"を交換する

$outputSummary = @() 

代わりの

$outputSummary = "" 
+0

何も変わらない、全く同じエラーが出る。 – Alex

1

てみてください。 PowerShellでは特定の意味を持ちます。 (サブプロパティを出力することができます:$env:usernameなど)

+0

しかし、そのコード行の前のループで 'System.Net.Mail.Attachment'を使用することによって、どのように問題が引き起こされるのでしょうか? – Alex

+1

これを避ける別の構文は、 '' $ {element}:FAILED "' – TravisEz13

関連する問題