PowerShellの出力コマンド"Write-Output"と"Write-Host"の違いを紹介します。
出力をホストに書き込みます。書き込む内容をカスタマイズすることができます。
出力のカスタマイズが可能なため、ForegroundColor
パラメータを利用するとテキストの表示色を指定できます。また、BackgroundColor
パラメータを利用すると背景色も指定できます。
Separator
パラメーターを利用すると指定した文字列でオブジェクトを区切り出力することもできます。
オブジェクトをコンソールに表示します。
Write-Output
コマンドの後ろにパイプのコマンドが記述されている場合は、Write-Outputの出力がパイプで次のコマンドに渡されます。
Write-HostはForegroundColor
パラメータを利用して文字色を指定できます。
カラーコードはこちらの記事を参照してください。
下記のコード(.ps1ファイル)(を記述します。
Write-Host "ペンギン" -ForegroundColor red
ps1ファイルを実行すると下図の画面が表示されます。文字が赤色で表示されることが確認できます。
カラーコードは色名、数値のどちらでも指定できます。
Write-Host "らくだ" -ForegroundColor 6
ps1ファイルを実行すると下図の画面が表示されます。文字が黄土色で表示されることが確認できます。
Write-HostはBackgroundColor
パラメータを利用して文字色を指定できます。
カラーコードはこちらの記事を参照してください。
下記のコード(.ps1ファイル)を記述します。
Write-Host "ねずみ" -ForegroundColor 6
ps1ファイルを実行すると下図の画面が表示されます。背景色が灰色で表示されることが確認できます。
下記のコード(.ps1ファイル)を記述します。
Write-Host "Penguin Jump!" -ForegroundColor Black -BackgroundColor Cyan
ps1ファイルを実行すると下図の画面が表示されます。背景色がシアンになり、文字が黒で表示されることが確認できます。
下記のコード(.ps1ファイル)を記述します。
Write-Host @(2,4,6,8,10,12)
上記のps1ファイルを実行します。下図の実行結果が表示されます。個々の要素は改行されません。
下記のコード(.ps1ファイル)を記述します。
Write-Output @(2,4,6,8,10,12)
上記のps1ファイルを実行します。下図の実行結果が表示されます。個々の要素は改行されて表示されます。
Write-Hostコマンドは、Separator オプションを利用すると要素の間の区切り文字を指定できます。
Write-Host @(100,200,300,400,500) -Separator "::"
上記のps1ファイルを実行します。下図の実行結果が表示されます。個々の要素がSeparatorオプションで指定した"::"の文字列で区切られて表示されます。
下記のコード(.ps1ファイル)を記述します。
Write-Host @(2,4,6,8,10,12) | Select-String 2
上記のps1ファイルを実行します。Write-Hostコマンドはコンソールに出力するコマンドのため、Select-Stringコマンドには出力内容は渡されないため、Write-Hostに与えたオブジェクトがそのまま表示されます。
下記のコード(.ps1ファイル)を記述します。
Write-Output @(2,4,6,8,10,12) | Select-String 2
上記のps1ファイルを実行します。パイプで後ろのコマンドがあるため、Write-Outputの出力はパイプで Select-String コマンドの入力として渡されます。Select-String では "2" が与えられているため、Weite-Outputから渡された値で "2"を含む値が抜き出されます。
2
12
が2を含んでいるため、この2つの値がコンソールに出力されます。
連想配列を出力する場合、Write-Hostでは連想配列のクラス名が表示されます。Write-Outputでは連想配列のキーと値の一覧が表示されます。
$value = @{penguin = "ペンギン"; camel = "ラクダ"; whale = "くじら"}
Write-Host "---------"
Write-Host $value
Write-Host "---------"
Write-Output $value
Write-Host "---------"