將輸出和詳細信息捕獲到兩個不同變量中是否可行?Powershell在不同變量中捕獲輸出和詳細信息
我的要求:
我創建使用PowerShell和WPF GUI的地方有一個RichTextBox其中僅顯示冗長和錯誤。
例如,如果我執行get-dscconfiguration -verbose,詳細流應該到richtextbox並且該cmdlet的輸出應該被分配給變量以便進一步manuplation。
請幫我做到這一點。謝謝!
-vinay
將輸出和詳細信息捕獲到兩個不同變量中是否可行?Powershell在不同變量中捕獲輸出和詳細信息
我的要求:
我創建使用PowerShell和WPF GUI的地方有一個RichTextBox其中僅顯示冗長和錯誤。
例如,如果我執行get-dscconfiguration -verbose,詳細流應該到richtextbox並且該cmdlet的輸出應該被分配給變量以便進一步manuplation。
請幫我做到這一點。謝謝!
-vinay
您可以捕獲一個流到一個變量或多個流到一個變量,但除此之外,您需要發送到文件並讀回或過濾捕獲多個流的變量。例如,要僅捕獲詳細輸出,可以將該命令作爲子表達式運行。
$VerboseOnly = $($OutputOnly= .{
New-Item -ItemType Directory -Path c:\Test -Verbose
Remove-Item -Path c:\Test -Verbose
Remove-Item -Path c:\Test -Verbose
Write-Warning "warning"
}) 4>&1
當運行這個輸出錯誤和警告的對象安慰,但冗長的對象將被保存到$ VerboseOnly和輸出對象保存到$的outputOnly。
您可將多個數據流以及下面的示例所示:
$VerboseAndWarning = $(
$OutputOnly = .{
New-Item -ItemType Directory -Path c:\Test -Verbose
Remove-Item -Path c:\Test -Verbose
Remove-Item -Path c:\Test -Verbose
Write-Warning "warning"
}) 4>&13>&1
此時只有錯誤對象被寫入到控制檯,輸出System.IO.DirectoryInfo對象是在$的outputOnly,和警告和詳細消息在$ VerboseAndWarning中。然後,您可以通過使用where-object子句進行篩選來將其拉出。
$VerboseAndWarning | Where-Object {$_ -is [System.Management.Automation.WarningRecord]}
WARNING: warning
$VerboseAndWarning | Where-Object {$_ -is [System.Management.Automation.VerboseRecord]}
VERBOSE: Performing operation "Create directory" on Target "Destination: C:\Test".
VERBOSE: Performing operation "Remove Directory" on Target "C:\Test".
斯蒂芬,我愛你!這是我正在尋找的。謝謝! –
https://stackoverflow.com/a/33002914
上面的網址是回答另一個類似的問題,那很可能會幫助你。
他同時提供stdout和stderr,然後在完成之後分割它們。然而這並不是在飛行中完成的。
你可以簡單地把每一個保存到它自己的變量中。
的可能的複製[Powershell的:捕獲節目輸出和錯誤給獨立的變量(http://stackoverflow.com/questions/24222088/powershell-capture-program-stdout-and-stderr-to-separate-變數) – sodawillow