2

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

我知道我可以与之相反,2>&1所以我尝试了:

echo "Hello" 1>&2

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

我问是因为能够做到这一点将使我更容易调试另一个问题。请参阅$LastExitCode=0 但 $?=False 在 PowerShell 中。将标准错误重定向到标准输出会产生 NativeCommandError

4

4 回答 4

2

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

于 2012-05-24T15:53:23.747 回答
1

首先:你得到的错误没有什么愚蠢的。例如,在 v3 中,我们获得了一些额外的重定向选项,最终我想我们将能够根据需要将详细重定向到警告、调试到错误和输出到错误。

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

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

HTH 巴特克

于 2012-05-18T17:52:01.957 回答
1

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

[Console]::Error.WriteLine("Hello")
于 2012-05-18T13:25:55.610 回答
1

Powershell方式:

$host.ui.WriteErrorLine('Hello')

这不填充$error自动变量。

于 2012-05-18T13:27:29.500 回答