Powershell转义字符`(反引号)无法转义字符串

3

我在PowerShell中添加新行到字符串时遇到了问题:

Get-ChildItem "C:\Users\matt\Desktop\CShell Install" |foreach {'<Component Id="'+$_.name+'" Guid="' +[guid]::NewGuid() + '">`r`n<File Id="'+$_.name+'" Source="$(var.CShell.TargetPath)"></File></Component>'}

正如您所看到的,我希望在``r`n处出现换行,但它们被直接打印出来了。有什么建议吗?

免责声明:我对Powershell不熟悉,但通常是\r\n - Kenney
1
单引号字符串只有一个有效的转义序列 ''(严格来说,PowerShell中有五个有效的单引号字符,所以你有25个有效的转义序列),其他任何字符,包括反引号,都会被直接解释。 - user4003407
@PetSerAl - 你能详细说明一下吗?双反引号也被直接解释了。 - m.edmondson
@m.edmondson 在单引号字符串中使用双反引号 ' 可以生成带有双反引号的字符串,因此它们会被按照字面意义进行解释,正如你所看到的那样。 - user4003407
1个回答

13

在需要 PowerShell 解释的反引号(或任何其他字符)的位置,请不要使用单引号。

"FirstLine`r`nSecondLine" prints
FirstLine
SecondLine

'"FirstLine`r`nSecondLine"' prints
"FirstLine`r`nSecondLine"

这就是窍门,记得还要转义我想作为字面值的双引号。谢谢。 - m.edmondson

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接