如何用多行字符串替换 Powershell 中的字符串?

How do I replace a string in Powershell with a Multi-Line String?

我正在尝试在 powershell 中创建富文本格式的报告。我有一个模板列表的 space,由文本 %TEMPLATES% 表示,我试图将其替换为目录中的项目列表。但是,虽然我可以在项目列表中添加换行符以将它们分开(并且这在控制台 window 中打印 OK),但当我在 rtf 文档中替换它们时,换行符不存在并且所有项目都没有连接间距。我不明白为什么这个 -replace 不起作用。请参阅下面的示例代码:

$statusRecordTemplate = 'StatusRecord.rtf'

$templates = (Get-ChildItem $templatesPath) | Join-String -Separator "`r`n"

$content = Get-Content $statusRecordTemplate -Raw

$content = $content -replace '%TEMPLATES%' , $templates

Set-Content  -Path 'C:\temp\testout.rtf' -Value $content

RTF 中的换行符并不重要。您必须改用 paragraph tag (\par)。

$templates = (Get-ChildItem $templatesPath) | Join-String -Separator '\par '

确保在标签后包含 space,如我的示例所示。当标签后跟文字文本时,这是必需的。

此外,您必须转义文字文本中的控制字符并正确编码任何 non-ASCII 个字符。有关详细信息,请参阅 this Q&A