Powershell将标准输出重定向到标准错误

时间:2012-05-18 13:06:27

标签: powershell stderr

在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

4 个答案:

答案 0 :(得分:2)

唉,不可能将标准输出重定向到标准错误。我认为这是一个不幸的遗漏。我们希望在未来版本的Powershell中修复此问题。

答案 1 :(得分:1)

假设您完全控制了这些消息,您可以使用.NET来帮助解决这个问题:

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

答案 2 :(得分:1)

Powershell方式:

$host.ui.WriteErrorLine('Hello'

这不会填充$error自动变量。

答案 3 :(得分:1)

首先:没有任何愚蠢的错误。 在第3版中,例如我们得到了一些额外的重定向选项,最后我想我们可以根据需要将详细信息重定向到警告,调试错误,然后输出到错误。

在此之前,您可以尝试模拟此行为,至少对于输出。 不确定这是否能解决您的问题,但您可以:

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

HTH 鲍尔泰克