【问题标题】:Powershell redirect standard output to standard errorPowershell 将标准输出重定向到标准错误
【发布时间】:2012-05-26 01:30:45
【问题描述】:

在 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

【问题讨论】:

  • 您是否正在从 PowerShell 调用一个正在写入标准输出的外部程序?
  • 那么为什么不直接捕获它的输出并将其视为已写入标准错误? $output = & externalprog.exe 2>&1。该变量存储您要发送到标准错误的输出。

标签: powershell stderr


【解决方案1】:

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

【讨论】:

    【解决方案2】:

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

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

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

    HTH 巴特克

    【讨论】:

      【解决方案3】:

      Powershell方式:

      $host.ui.WriteErrorLine('Hello')

      这个不填$error自动变量。

      【讨论】:

        【解决方案4】:

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

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

        【讨论】:

          猜你喜欢
          • 2012-08-15
          • 1970-01-01
          • 2020-11-05
          • 1970-01-01
          • 2017-05-13
          • 1970-01-01
          • 2022-12-14
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多