2012-05-18 156 views
2

在Powershell中,我如何将标准输出重定向到标准错误Powershell将标准输出重定向到标准错误

我知道我可以做反过来与2>&1所以我尝试:

echo "Hello" 1>&2 

但我得到一个愚蠢的错误The '1>&2' operator is reserved for future use.

我问,因为能够做到这将使它更容易为我调试另一个问题。见$LastExitCode=0 but $?=False in PowerShell. Redirecting stderr to stdout gives NativeCommandError

+0

您是否正在调用PowerShell写入标准输出的外部程序? –

+0

是------------ –

+0

那么,为什么不只是捕获它的输出,并把它当作写入标准错误呢? '$ output =&externalprog.exe 2>&1'。变量存储您想要发送到标准错误的输出。 –

回答

2

唉,这是不可能的标准输出重定向到标准错误。我认为这是一个不幸的遗漏。让我们希望这在未来的Powershell版本中得到解决。

1

假设你是在消息的完全控制,你可以挖掘到.NET助阵本:

[Console]::Error.WriteLine("Hello") 
1

PowerShell方法:

$host.ui.WriteErrorLine('Hello'

这不填写$error自动变量。

+0

这个是红色的。 –

+0

您可以使用'write-error“Hello”'来模拟异常。 –

1

第一:没有什么愚蠢的错误,你会得到。 在第3版中,例如我们得到了一些额外的重定向选项,最终我想我们可以根据需要将verbose重定向到警告,调试到错误,并输出到错误。

在此之前,您可以尝试模拟此行为,至少对于输出。 不知道这会解决你的问题,但你可以:

echo "foo" | Write-Error 
yourproram.exe | Write-Error 

HTH 鲍尔泰克

相关问题