我希望看到控制台中命令的输出,并将其保存在一个文件中,因此我有以下两个选项:
当我使用command | tee output.txt时,它根本不生成任何输出文件,但它在控制台中像往常一样工作。
当我使用command 2>&1 | tee output.txt时,它会生成一个很好的输出文件,但是控制台中的文本显示为红色。

是否有任何方法可以修复第一个选项或让文本像往常一样出现在第二个选项中?我使用的是Windows 10( PowerShell 10),我使用的程序是清算基础3.5.5。只是因为这件事很重要。
发布于 2018-10-24 21:13:25
在PowerShell中,通过2>&1将stderr行从外部程序重定向到PowerShell的成功流时,会将这些行包装在[System.Management.Automation.ErrorRecord]实例中,以防捕获这些行以供进一步处理。
在Windows PowerShell中,这些捕获的实例呈现为PowerShell错误,这就是您看到红色输出的原因(相比之下,如果没有重定向,stderr行将传递到控制台,而无需着色)。
一个简单的解决方法是显式地将这些对象转换为字符串,这将输出原始行(PSv3+语法;用于简洁的ForEach-Object内置别名% ):
... 2>&1 | % ToString | Tee-Object output.txt注意:在安装随需应变、跨平台的https://github.com/PowerShell/PowerShell/blob/master/README.md版本中,这个解决方案不再必要,即使是捕获的stderr行现在也一直以字符串的形式呈现。
发布于 2020-12-21 06:21:38
如果您在DOS中,那么您可以利用powershell (来自DOS)并使用tee对象,或多或少像Linux中的tee一样。
C:\> powershell some_command ^| tee-object -FilePath some_outputfile^转义管道,以便管道应用于powershell,而不是DOS。
Powershell和to object应该以Windows为标准,所以不需要安装任何东西!
https://stackoverflow.com/questions/52970939
复制相似问题