関数のなかでうっかり、Write-Outputを使ってしまい、意図しない動作ではまってしまいました。関数(functionの中でWrite-Outputを使うとreturn値として扱われるのです)
1. Write-Host
Write-Host は、コンソール(ホスト)に直接メッセージを表示するためのコマンドレットです。この出力は 標準出力ストリームには流れず、画面表示のみを目的とします。
特徴
- 出力は画面表示専用で、後続のコマンドには渡されません。
- 主にユーザー向けのメッセージ表示に使います。
- カラフルな出力を行うオプション(-ForegroundColorや-BackgroundColor)があります。
2. Write-Output
Write-Output は、標準出力ストリームにデータを送信します。パイプラインで他のコマンドに渡すためのデータを生成します。
特徴
- 出力はパイプラインに流れるので、後続のコマンドで処理できます。
- ユーザー表示だけでなく、スクリプトやコマンド間でのデータ受け渡しに使用します。
違いの比較表
| 機能 | Write-Host | Write-Output | 
|---|---|---|
| 出力先 | コンソール(ホスト) | 標準出力ストリーム(パイプライン) | 
| パイプラインでの利用 | ×(使用不可) | ○(使用可能) | 
| 主な用途 | ユーザー向けメッセージの表示 | スクリプト間のデータ渡し、標準出力の利用 | 
| カスタマイズ(色指定など) | 可能( -ForegroundColor等) | 不可能 | 
| 使用タイミング | メッセージを強調して画面表示したい場合 | データ処理やパイプラインで使う場合 | 
使い分けの基準
- Write-Hostを使う場合- メッセージの強調や装飾付きのログをコンソールに出力したいとき。
- パイプラインやスクリプト内で処理する必要がないユーザー向けの単純な通知を表示したいとき。
 
- Write-Outputを使う場合- スクリプトやコマンドで生成したデータをパイプラインや後続処理に渡したいとき。
- 通常のデータ出力として利用したいとき。
 
 
  
  
  
  
