powershell

Write-OutputとWrite-hostの違い

関数のなかでうっかり、Write-Outputを使ってしまい、意図しない動作ではまってしまいました。関数(functionの中でWrite-Outputを使うとreturn値として扱われるのです)

1. Write-Host

Write-Host は、コンソール(ホスト)に直接メッセージを表示するためのコマンドレットです。この出力は 標準出力ストリームには流れず、画面表示のみを目的とします

特徴

  • 出力は画面表示専用で、後続のコマンドには渡されません。
  • 主にユーザー向けのメッセージ表示に使います。
  • カラフルな出力を行うオプション(-ForegroundColor-BackgroundColor)があります。

2. Write-Output

Write-Output は、標準出力ストリームにデータを送信します。パイプラインで他のコマンドに渡すためのデータを生成します。

特徴

  • 出力はパイプラインに流れるので、後続のコマンドで処理できます。
  • ユーザー表示だけでなく、スクリプトやコマンド間でのデータ受け渡しに使用します。

違いの比較表

機能Write-HostWrite-Output
出力先コンソール(ホスト)標準出力ストリーム(パイプライン)
パイプラインでの利用×(使用不可)○(使用可能)
主な用途ユーザー向けメッセージの表示スクリプト間のデータ渡し、標準出力の利用
カスタマイズ(色指定など)可能(-ForegroundColor 等)不可能
使用タイミングメッセージを強調して画面表示したい場合データ処理やパイプラインで使う場合

使い分けの基準

  • Write-Host を使う場合
    • メッセージの強調や装飾付きのログをコンソールに出力したいとき。
    • パイプラインやスクリプト内で処理する必要がないユーザー向けの単純な通知を表示したいとき。
  • Write-Output を使う場合
    • スクリプトやコマンドで生成したデータをパイプラインや後続処理に渡したいとき。
    • 通常のデータ出力として利用したいとき。
スポンサーリンク
タイトルとURLをコピーしました