6

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

my_executable.exe | Out-Host

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

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

编辑:

换句话说,我想要的是:

着色输出

但是 Out-Host 会导致:

无着色输出

编辑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 的彩色输出而不将其返回给调用者的方法。

4

2 回答 2

3
$exe = ".\my_executable.exe"
$args = ""
$process = Start-Process $exe $args -NoNewWindow -Wait -ErrorAction Stop -PassThru
if ($process.ExitCode -ne 0) {
    throw "FAILED: $exe $args"
}
于 2016-03-03T18:52:13.910 回答
0

Out-Host命令不支持着色,Write-Host所以我建议改用它。

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

于 2012-06-28T17:24:21.810 回答