[ホーム] > [間違えやすい類語 IT編一覧] > [Write-Host、Write-Output 、echo の使い分けはとても重要]

PS C:\> write-host "test" | Out-Null
test
PS C:\> write-output "test" | Out-Null
(注意)分かりやすく簡単に記載しており、一部の環境や分野では記載内容が異なる可能性があります。あくまでも参考程度でお読みください。
| 説明 | Write-Host | Write-Output | echo |
| 機能 | コンソールに直接書き込む。よってパイプラインで処理したりファイルへリダイレクトすることはできない。 | 出力ストリームに書き込む。よってパイプラインで渡したりファイルへリダイレクトすることが可能。 | Write-Output のエイリアス。write も同じ。 |
| コンソール上で実行 | コンソールに出力される。 | コンソールに出力される。(パイプライン処理で最後の処理が指定されない場合、デフォルト(Out-Default)がコンソール出力のため) | コンソールに出力される。 |
| 関数(ファンクション)内で実行 | コンソールに出力される。 | 戻り値に設定される。 | 戻り値に設定される。 |
| 機能 | 文字をコンソールに出力する。 | 文字を標準出力へ出力する。もし Write-Output がパイプラインの最後の場合は、コンソールへ出力される。 | Write-Output と同じ。 |
| Start-Transcriptでのファイルへ出力 | 出力される (古いバージョンのPowershellではファイルに出力されない不具合があった) | 出力される | 出力される |
| 関数(ファンクション)内での実行例 | > $x = Write-Host "123" 123 > echo $x (なし) #上記の通り、単に標準出力に出力するだけで関数には影響を与えない。 | >$x = Write-Output "123" >Write-Host $x 123 #上記の通り、Write-Outputは関数の戻り値に設定される。 | >$x = echo "123" > Write-Host $x 123 #上記の通り、echo は関数の戻り値に設定される。 |
| 実行図 |
|
|
|
(実は)echo は Write-Output の エイリアスです。同じものです。writeも同じです。以下のコマンドで alias を確認することが可能です。
PS> Get-Alias echo
CommandType Name Version Source
----------- ---- ------- ------
Alias echo -> Write-Output
PS> Get-Alias write
CommandType Name Version Source
----------- ---- ------- ------
Alias write -> Write-Output
[ホーム] > [間違えやすい類語 IT編一覧]
,