PowerShell将terraform plan输出设为变量时如何保留换行符
问题原因
这是PowerShell处理外部命令输出的默认机制:当你将terraform这类外部命令的输出直接赋值给变量时,PowerShell会自动按换行符拆分输出内容,生成字符串数组,数组的每一个元素对应原输出的一行内容,而不是将完整输出保存为带换行符的单个字符串。
你直接执行$blah时能看到换行,是因为PowerShell默认会逐行输出数组的每个元素,视觉上呈现为分行效果,但变量本身没有存储统一的换行符,所以你检测\n、\r都会返回false。你可以执行$blah.GetType()验证变量类型,返回结果应为数组类型。
解决方法
方法1:赋值时直接合并为单字符串
使用Out-String强制将terraform输出合并为带完整换行符的单个字符串:
$blah = terraform show -no-color blah.tfplan | Out-String
处理后再执行$blah.Contains("n")`就会返回True,变量内已经保留了所有换行和缩进。
方法2:已有数组变量手动拼接
如果你已经将输出保存为数组格式,可以用-join手动拼接换行符:
$blah_single = $blah -join "`n"
PR展示优化
将plan内容传入Pull Request时,需要用三个反引号将内容包裹为Markdown代码块,即可在PR页面完整保留换行、缩进格式:
# 这里放处理后的terraform plan输出
内容的提问来源于stack exchange,提问作者cashman04
相关产品推荐
相关产品推荐

