2012-05-18 202 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 鮑爾泰克

相關問題