使用Powershell Out-Host时保留着色

时间:2012-06-27 20:04:58

标签: powershell scripting

我有一个命令行可执行文件,可以将彩色文本打印到标准输出。当我做以下事情时......

my_executable.exe | Out-Host

...我发现Out-Host删除了所有彩色输出。当我想显示程序的彩色输出而不通过管道发送它时,这是一个问题。

是否有另一种方法可以让我显示控制台程序/批处理文件的彩色输出而不通过管道发送?

编辑:

换句话说,我想要的是:

Output with coloring

但是Out-Host导致了这个:

Output without coloring

编辑2:

这就是为什么我不能只调用my_executable.exe:

我在.ps1文件中有一个类似于以下内容的脚本

param($someValue)

# do some things
.\my_executable.exe | Out-Host 
# do some more things
return 1

现在,当我执行以下操作时:

$result = .\my-script.ps1

$ result是1.如果我不使用Out-Host,$ result将是my_executable.exe的输出,最后为1。 Out-Host允许我显示my_executable.exe 的输出而不将其返回给调用者。我想要的是一种显示my_executable.exe的彩色输出而不将其返回给调用者的方法。

2 个答案:

答案 0 :(得分:1)

$exe = ".\my_executable.exe"
$args = ""
$process = Start-Process $exe $args -NoNewWindow -Wait -ErrorAction Stop -PassThru
if ($process.ExitCode -ne 0) {
    throw "FAILED: $exe $args"
}

答案 1 :(得分:0)

Out-Host命令不支持着色,Write-Host确实如此,所以我建议使用它。

或者,只需摆脱Out-Host业务,然后执行$result = .\my-script.ps1 | select -last 1