根据Powershell的“ 关于引用规则 ”:
此处的字符串是单引号或双引号的字符串,其中的引号是按字面意义解释的。
但是,以下字符串在Powershell版本5.0(内部版本10586,修订版117)中导致TerminatorExpectedAtEndOfString异常。在Powershell 2.0版中,它可以按预期工作:
$herestr=@"
'"'
"@
Write-Host $herestr
如果我用反引号(`)引用最后一个单引号,那么here-string在2.0版和5.0版中都可以正常工作。
$herestr=@"
'"`'
"@
Write-Host $herestr
为什么我需要在here字符串中转义最后一个单引号?
@PetSerAl:感谢您的反馈。您知道这是已知的错误还是应该报告?
—
Bram
@PetSerAl:谢谢:我也在github上创建了一个问题,因为尚不清楚uservoice论坛是否仍在使用:github.com/PowerShell/PowerShell/issues/2780。如果您发布了解决方法,则将其列为答案,我会接受的。同时,我发现Posh风格指南建议在等号之前和之后使用空格,这样看来似乎是解决此错误的正确方法。
—
Bram
BareWord
字符串文字。如果失败,则会产生错误。您可以通过放置额外的空间来解决此问题:$herestr =@"...
或$herestr= @"...
; 或括在括号中:($herestr=@"..."@)
。