将Powershell中的命令输出捕获为字符串而不是字符串数组

时间:2014-01-09 18:22:50

标签: powershell

我试图将外部命令的输出捕获为字符串,但Powershell返回的结果始终是一个字符串数组。据我所知,Powershell将输出拆分为换行符(Windows或Unix行结尾)并将结果存储在数组中,但我希望保留这些换行符,因为这是用于svn预提交钩子脚本来检测是否存在已提交的文件具有混合行结尾。

$output = svnlook cat -t $transId -r $repos $filename

此时行结尾已被剥离,$output是一个字符串数组,每行输出一个。

重定向到文件似乎不起作用,因为这会对行结尾进行标准化。你怎么告诉Powershell不分割命令的输出?

谢谢!

3 个答案:

答案 0 :(得分:6)

只需在括号中包含“inner”命令,并在右侧使用-join运算符和"`n"

# Preserve line breaks
$result = (ipconfig) -join "`n";

# Remove line breaks
$result = (ipconfig) -join '';

答案 1 :(得分:6)

将命令输出传递到Out-String cmdlet:

$output = svnlook cat -t $transId -r $repos $filename | Out-String

答案 2 :(得分:2)

如果您需要它作为单个字符串,您可以将结果转换为[string]

[string]$output = svnlook cat -t $transId -r $repos $filename