在PowerShell字符串中保留换行符

时间:2010-12-13 17:38:57

标签: string powershell newline

在PowerShell脚本中,我正在捕获变量中EXE文件的字符串输出,然后将其与其他文本连接以构建电子邮件正文。

然而,当我这样做时,我发现输出中的换行符被缩减为空格,使得总输出不可读。

# Works fine
.\other.exe

# Works fine
echo .\other.exe

# Works fine
$msg = other.exe
echo $msg

# Doesn't work -- newlines replaced with spaces
$msg = "Output of other.exe: " + (.\other.exe)

为什么会发生这种情况,我该如何解决?

2 个答案:

答案 0 :(得分:12)

或者您可以像这样设置$ OFS:

PS> $msg = 'a','b','c'
PS> "hi $msg"
hi a b c
PS> $OFS = "`r`n"
PS> "hi $msg"
hi a
b
c

来自man about_preference_variables

输出字段分隔符。指定分隔的字符 数组转换为字符串时数组的元素。

答案 1 :(得分:8)

也许这会有所帮助:

$msg = "Output of other.exe: " + "`r`n" + ( (.\other.exe) -join "`r`n")

您获得了一个行列表,而不是来自other.exe的文本

$a = ('abc', 'efg')
 "Output of other.exe: " + $a


 $a = ('abc', 'efg')
 "Output of other.exe: " +  "`r`n" + ($a -join "`r`n")