2016-04-12 16 views
3

PSがオブジェクトの書式をどのようにWrite-HostとWrite-Outputで表示してオブジェクトを直接呼び出すかについて、混乱することはほとんどありません。Write-Hostで書式設定された出力を表示する方法

Write-Outputは関数で呼び出すときにWrite-Outputが壊れてしまうため、Write-Hostを使用する必要があります。

Write-Hostを使用すると、表示されたデータが期待したものではなく、直接呼び出すときのようにオブジェクトを表示したかったのです(Write-Hostも同じです)。

PS>$files = GetChildItem C:\ 
PS>$files #or Write-Output $files 
PS>Write-Host $files 
PS>Write-Host $files |Format-Table 
PS>$files | Format-Table | Write-Host 

enter image description here

+0

書き込みホストは複雑なオブジェクトを表示するためのものではありません。これがライトアウトプットの行うことです。 – Matt

+0

ちょうど訂正Matt、Write-Outputは、オブジェクトをパイプライン上に置いて次の関数/コマンドレットで消費するためのものです。パイプラインの終わりに達したときだけ、呼び出し側に返されるものがあります... PSプロンプトから呼び出されると、ホストは、コンソールに表示される各オブジェクトの.ToString()メソッドを使用します。オブジェクトタイプ – Djarid

答えて

4

Out-String文字列に表形式を変換します。指摘されているように、Nick Daniels

$files | Format-Table | Out-String|% {Write-Host $_} 
関連する問題