這必須是一個非常簡單的解決方案,但我不能爲我的生活找出如何將錯誤/警告重定向到標準輸出。重定向cmdlet警告/錯誤輸出?
現在,我被分配給一個變量捕捉的東西輸出,而不用擔心格式等,因此,例如:
$buffer += Whatever-Cmdlet
但我想這樣做也捕捉任何錯誤消息到該變量。喜歡做2> & 1.
有沒有什麼辦法讓這項工作?我曾嘗試:
$buffer += Whatever-Cmdlet 2>&1
沒有成功。
感謝您的幫助!
這必須是一個非常簡單的解決方案,但我不能爲我的生活找出如何將錯誤/警告重定向到標準輸出。重定向cmdlet警告/錯誤輸出?
現在,我被分配給一個變量捕捉的東西輸出,而不用擔心格式等,因此,例如:
$buffer += Whatever-Cmdlet
但我想這樣做也捕捉任何錯誤消息到該變量。喜歡做2> & 1.
有沒有什麼辦法讓這項工作?我曾嘗試:
$buffer += Whatever-Cmdlet 2>&1
沒有成功。
感謝您的幫助!
實際上,它只要證明你管的輸出:
$buffer += Whatever-Cmdlet 2>&1 | Out-String
看來工作。謝謝!
不徹底的測試,但
$buffer += Whatever-Cmdlet -WarningVariable +buffer -ErrorVariable +buffer
,如果你有V3/4:你設置後
[email protected]{"*:WarningVariable"="+buffer";"*:ErrorVariable"="+buffer";}
應該做的所有的cmdlet的運行。
沒有看到帶有WarningVariable和ErrorVariable的「+」語法。 –
請注意,使用PSDefaultParameterValues需要V3或更高版本。 –
這取決於您正在運行的是哪個版本的PowerShell。在PowerShell v2中,警告被寫入主機,因此無法在變量中捕獲。在PowerShell中v3的警告被寫入到一個單獨的輸出流,所以你必須重定向警告流和錯誤流捕獲錯誤和警告:
$buffer += Whatever-Cmdlet 2>&1 3>&1 | Out-String
更多信息請參見Get-Help about_Redirection
。
是的,這正是你如何使用.EXE。但是,這不適用於cmdlet。換句話說,像'get-process 2>&1'這樣的東西不會做你所描述的,但是'cmd/c type myfile.txt 2>&1'會。 –