SEブログ

【PowerShell】Write-Hostコマンドレットを使ってみる

こんにちは!

 

PowerShell の Write-Host コマンドレットを使って、コンソールに表示される文字をカスタマイズしてみましょう。

 

 

Write-Host コマンドの説明

 

 

PowerShell のコンソールに表示される文字をカスタマイズする事ができます。

例えば、以下のように、コマンドの結果が返る文字の色を変更したりできます。

 

PS C:\Users\User> Write-Host "カラフルテキスト" -ForegroundColor Cyan
カラフルテキスト ← 以下のようにシアン色で表示される。

 

また、背景の色なんかも変更したりもできます。

 

 
PS C:\Users\masasoma> Write-Host "文字の背景の色を変えてみる" -ForegroundColor white -BackgroundColor red
文字の背景の色を変えてみる ← 以下のように白文字の背景赤で表示される。

 

 

Write-Host 以外のコマンドで、用途に合わせてカスタマイズされた文字を返す

 

 

例えばエラーメッセージなど、用途に合わせた文字を返したい場合は、他のコマンドで実行可能です。

 

警告メッセージを返したい場合

 

PS C:\>  Write-Warning "これは警告メッセージです。"
警告: これは警告メッセージです。

 

 

エラーメッセージを返したい場合

 

PS C:\> Write-Error "これはエラーメッセージです。"
Write-Error "これはエラーメッセージです。" : これはエラーメッセージです。
+ CategoryInfo : NotSpecified: (:) [Write-Error], WriteErrorException
+ FullyQualifiedErrorId : Microsoft.PowerShell.Commands.WriteErrorException

 

 

デバッグ内容を返したい場合

 

PS C:\> Write-Debug "これはデバッグ内容です。" -Debug
デバッグ: これはデバッグ内容です。

 

 

詳細内容を返したい場合

 

PS C:\> Write-Verbose "これは詳細内容です。" -Verbose
詳細: これは詳細内容です。

 

 

こんな感じで、簡単に用途に合わせた、カスタマイズされた文字をコンソールに返すことができます。

 

 

Write-Host にはできない事(重要)

 

 

さて、Write-Host にはできない事があります。

 

 

パイプラインへ渡せない

 

 

オブジェクトをパイプラインへ渡すことができないのです。

Write-Host で指定したオブジェクト(例えば “Hello World!”)はコンソール画面(ホスト画面)に出力する事しかできません。

つまり、Write-Host は、コンソール画面の出力に限った用途という事になります。

 

実際に、オブジェクトを パイプで Get-Member に渡してみましょう。実行すると、エラーが返ってきます。

 

PS C:\> Write-Host "Hello World!" | Get-Member
Hello World!
Get-Member : Get-Member コマンドレットにオブジェクトを指定する必要があります。
発生場所 行:1 文字:29
+ Write-Host "Hello World!" | Get-Member
+ ~~~~~~~~~~
+ CategoryInfo : CloseError: (:) [Get-Member]、InvalidOperationException
+ FullyQualifiedErrorId : NoObjectInGetMember,Microsoft.PowerShell.Commands.GetMemberCommand

 

 

変数に代入する事ができない

 

 

Write-Host は、画面に直接出力する用途なので、変数に代入する事ができません。

 

PS C:\> $var = Write-Host "Hello World!"
Hello World!

PS C:\> $var

 

 

パイプラインに渡したり、変数に代入したりする場合は Write-Output を使う事になります。

 

 

いかがでしょうか。

 

 

Write-Host の使い方やできない事がこれでご理解いただけたのではないかと思います。

次は、Write-Output の使い方を記事に書きたいと思います。

 

 

では最後までお読みいただきありがとうございました!