2016-07-28 9 views
0

私は$output1をの出力redirectに出力するためにこのようなスクリプトを書いています。Powershell Standard Verbose to variable

$output1 = $(
    cmdlet1 [Some Parameters] -Verbose | % { 
     cmdlet2 [Other Some Parameters] -Verbose 
    }) 4>&1 

変数に標準の詳細情報を保存しないと、良い方法で改行で出力されます。 しかし、$output1で標準の詳細をキャプチャしてファイルに保存すると、非常に長い1行にすべてが出力されます。

私はどのようにして変数を標準で詳細に保存することができますか?

答えて

1

私が知る限り、簡単な構文はありません。どうして?なぜなら、パイプライン出力は、冗長、警告、およびエラーメッセージを妨害するからです。まだ回避策はありますが、少し複雑です。冗長出力を一時ファイルにリダイレクトし、内容を取得し、ファイルを削除します。見てみましょう:あなたの例では

$resultFile = [System.IO.Path]::GetTempFileName(); 
1| % { 
    $x = [System.IO.Path]::GetTempFileName(); 
    rm $x -Verbose 
} 4>$resultFile 
$result = cat $resultFile 
rm $resultFile 

$resultFile = [System.IO.Path]::GetTempFileName(); 
$(
cmdlet1 [Some Parameters] -Verbose | % { 
    cmdlet2 [Other Some Parameters] -Verbose 
}) 4>&1 
$output1 = cat $resultFile 
rm $resultFile