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

 平凡天使007 发布于 2023-02-04 18:58

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

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

此时,行结束已被剥离,并且$output是一个字符串数组,每行输出一个.

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

谢谢!

2 个回答
  • 只需将"inner"命令括在括号中,然后在右侧使用-join运算符"`n".

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

    2023-02-04 19:00 回答
  • 将命令输出Out-String传递到cmdlet:

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

    2023-02-04 19:00 回答
撰写答案
今天,你开发时遇到什么问题呢?
立即提问
热门标签
PHP1.CN | 中国最专业的PHP中文社区 | PNG素材下载 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有