我有一个命令行可执行文件,可以将彩色文本打印到标准输出。当我做以下事情时......
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的彩色输出而不将其返回给调用者的方法。
答案 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
。