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