我想在控制台中查看命令的输出并将其保存在文件中,所以我有两个选择:
当我以某种方式使用command | tee output.txt
时,它根本不生成任何输出文件,但在控制台中照常工作。
当我使用command 2>&1 | tee output.txt
时,它会生成一个精细的输出文件,但控制台中的文本显示为红色。
有什么办法可以修复第一个选项,还是让文本照常显示在第二个选项中?我正在使用Windows PowerShell(Windows 10),而我正在使用的程序是liquibase 3.5.5。只是在这很重要的情况下。
答案 0 :(得分:2)
在PowerShell中,通过2>&1
将stderr行从外部程序重定向到PowerShell的成功流,将这些行包装在[System.Management.Automation.ErrorRecord]
实例中,这就是为什么您看到红色输出的原因(没有重定向, stderr行通过到控制台,而不会着色)。
一种简单的解决方法是将这些对象显式转换为字符串,并输出原始行(PSv3 +语法;为简短起见,%
的内置别名ForEach-Object
):
... 2>&1 | % ToString | Tee-Object output.txt
答案 1 :(得分:0)
如果您使用的是 DOS,那么您可以利用 powershell(来自 DOS)并使用 tee-object 或多或少地像在 Linux 中那样做一个 tee。
C:> powershell some_command ^| tee-object -FilePath some_outputfile
'^' 对管道进行转义,以便管道适用于 powershell 而不是 DOS。
Powershell 和 tee-object 应该是 Windows 的标准配置,所以无需安装!