我试图捕获运行外部命令的输出作为字符串,但Powershell返回的结果始终是一个字符串数组.据我所知,Powershell将输出拆分为换行符(Windows或Unix行结尾)并将结果存储在数组中,但我希望保留这些换行符,因为这是用于svn预提交钩子脚本来检测是否存在已提交的文件具有混合行结尾.
$output = svnlook cat -t $transId -r $repos $filename
此时,行结束已被剥离,并且$output
是一个字符串数组,每行输出一个.
重定向到文件似乎不起作用,因为这标准化了行结尾.你怎么告诉Powershell不分割命令的输出?
谢谢!
只需将"inner"命令括在括号中,然后在右侧使用-join
运算符"`n"
.
# Preserve line breaks $result = (ipconfig) -join "`n"; # Remove line breaks $result = (ipconfig) -join '';
将命令输出Out-String
传递到cmdlet:
$output = svnlook cat -t $transId -r $repos $filename | Out-String