如何为powershell中的cmd脚本保留彩色输出(stdout和stderr)?

如何为powershell中的cmd脚本保留彩色输出(stdout和stderr)?,powershell,cmd,Powershell,Cmd,我们已经为cmd构建了脚本。例如,这里是其中一个的输出 当我在PS中运行相同的命令时,它以红色输出所有内容(可能是因为它用于err输出) 我能保留颜色吗?起初,我认为这是不可能的 但是,经过一点搜索,我找到了这篇博文 您应该能够从那里使用PowerShell脚本来创建所需的内容。我不确定这是否可行,但如果您不介意将stderr重定向到stdout,PowerShell不会尝试将所有内容都涂成红色。要做到这一点,只需在运行cmd脚本时添加2>&1,例如 build.cmd 2>&

我们已经为cmd构建了脚本。例如,这里是其中一个的输出

当我在PS中运行相同的命令时,它以红色输出所有内容(可能是因为它用于err输出)


我能保留颜色吗?

起初,我认为这是不可能的

但是,经过一点搜索,我找到了这篇博文


您应该能够从那里使用PowerShell脚本来创建所需的内容。

我不确定这是否可行,但如果您不介意将stderr重定向到stdout,PowerShell不会尝试将所有内容都涂成红色。要做到这一点,只需在运行cmd脚本时添加2>&1,例如

build.cmd 2>&1

美好的仍然需要做一些工作,但看起来我可以创建一个保存颜色的包装器。使用一个简单的C#控制台应用程序,将彩色输出写入stdout和stderr。直接从PowerShell和从PowerShell调用的bat文件调用此exe。两种颜色看起来都一样,就像从cmd调用的一样。@JasonShirk我没有听你说的。xvorsk希望捕获输出的颜色,而不仅仅是输出的文本。@当从PowerShell运行时,输出变为红色。我无法复制。事实上,我想我误解了这个问题。我以为他想捕捉输出文本的颜色。真的,他是在问为什么从PowerShell打电话时颜色不显示。谢谢,我已经试过了-对我不起作用。看起来我们有很多下标/exe/powershell子类,2>&1不适用于嵌套调用。只需用引号将重定向传递到cmd.exe:
“2>&1”