某PCショップ店員の覚書

勤務中に作成したプログラムやスクリプトのまとめ

Powershellの「Write-Output」と「Write-Host」、結局どっちがいいの問題

まさかの2連更新です。

「Write-Output」と「Write-Host」の違い

Write-OutputとWrite-Hostの違いについては、別の方が詳しく説明されているので端折りますが、結局のところ使い分けが大事です。

・パイプライン処理をさせたり、結果を変数へ保存したい場合、Write-Output
・コンソール画面に文字を出したいだけなら、Write-Host

これに尽きます。
Write-Outputは本来、パイプライン処理を行う際に使うのでコンソール画面への表示は行いません。(ただし、特別な仕組みによって実際にはコンソール画面へ表示される)
対してWrite-Hostの場合、コンソール画面への出力を主目的としているので文字に色を付けて(-ForegroundColor)表示させたり、文字の背景色を指定する(-BackgroundColor)こともできます。
注意点として、あまりありませんが「Write-Hostの結果を変数に保存する」ことはできません。

ex)

Wirte-Host の場合、結果を変数へ保存することはできない


Write-Output の場合、結果を変数へ保存できる


なので、コンソール画面へ文字を出力したいだけであれば「Write-Host」を、結果を保存して後々利用する場合は「Write-Output」を利用しましょう。