如何在PowerShell中用Write-Host保留命令输出的换行符?
解决PowerShell 5.1中Write-Host丢失帮助文本换行的问题
在PowerShell 5.1里,直接把C++程序的多行帮助输出传给Write-Host时,PowerShell会将输出解析为字符串数组,默认用空格拼接所有元素,导致原本的换行全部消失。以下是几种可行的解决办法:
方法1:直接执行程序输出帮助(最简便)
不需要借助Write-Host,直接调用你的C++程序输出帮助内容即可,程序本身会保留原始的换行格式:
.\your-program.exe --help
方法2:用Out-String转换为带换行的单字符串
如果必须通过Write-Host输出,先通过Out-String将程序的多行输出转换为包含原始换行符的单个字符串,再传递给Write-Host:
$helpContent = .\your-program.exe --help | Out-String Write-Host $helpContent
方法3:在CMake生成脚本时避免额外处理
确保CMake的configure_file模板中,生成的PowerShell脚本不对程序输出做不必要的拼接。比如模板文件(如script.ps1.in)可以直接写:
.\@PROGRAM_NAME@.exe --help
这样生成的.ps1脚本会直接执行程序输出帮助,自然保留所有换行。
内容的提问来源于stack exchange,提问作者rbaleksandar
相关产品推荐
相关产品推荐

