如何在here-strings中使用变量时保留换行符

时间:2012-10-25 18:57:59

标签: powershell

运行以下代码时:

  $txt = Get-Content file1.txt

    $a = @"
     -- file start --
     $txt
     -- file end --
    "@

   $a

所有新行都会从文件内容中删除,但只是运行

$txt

打印出文件而不剥离新行。

任何想法如何使用here-string来使其工作?

谢谢!

2 个答案:

答案 0 :(得分:12)

如果您将数组放入字符串中,则会在项目之间使用$OFS(如果$OFS$null的空格)进行展开。您可以使用

看到相同的效果
"$txt"
''+$txt

和其他一些人。您可以设置$OFS="`r`n",这会将它们所加入的空间更改为换行符。

您也可以将开头的Get-Content更改为

$txt = Get-Content file1.txt | Out-String
$txt = [IO.File]::ReadAllText((Join-Path $pwd file1.txt))

答案 1 :(得分:8)

将$ Text文本传递给子表达式中的Put-String。

$a = @"
    -- file start --
    $($txt | Out-String)
    -- file end --
"@