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

PowerShell

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

2018年5月24日

こんにちは!

 

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 の使い方を記事に書きたいと思います。

 

 

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

  • この記事を書いた人

そーまん

セキュリティエンジニアやってます。
ブログ歴3年。PVは月15万PV程度。
趣味はボクシング、筋トレ、登山です。
穏やかで人見知りでマイペースな人です。

人気記事

1

こんにちは!SE ブログの相馬です。       今回は、PC に適用されている GPO を確認する方法について書きました。     グループポリシー ...

2

こんにちは!SE ブログの相馬です。       今回は sysprep について、全体的に PC をセットアップする観点から書いてみました。長々と書いてあります。まずは ...

3

こんにちは!SE ブログの相馬です。       今回は、グループポリシーを使って、特定のコンピューターに対して、ドメインユーザーに Administrators 権限を ...

4

こんにちは!SE ブログの相馬です。       今回は、Windows サインイン後に一時ユーザープロファイルが読み込まれてしまった場合の解決方法について書きました。 ...

5

こんにちは!SEブログの相馬です。       今回は、ユーザープロファイルを削除する方法について書いてみました。     1 台の PC を複数人で ...

6

こんにちは!SE ブログの相馬です。       今回は、繰り返し文について書いてみました。PowerShell では他のプログラミング言語同様、繰り返し処理を行うことが ...

7

コマンドを使って CPU とメモリの使用率をデータで取得してみましたので、例えば PC のトラブルシューティングで問題を再現させる際にデータを取得しておくと、原因の特定に役立つ場合があるかと思います。

8

既存の PC と同じ構成で別のメーカーの PC でマスターイメージを作る際、インストールされているアプリを同一にする為に必要になるかと思います。

9

企業で多くの GPO が適用されている環境では、PC に GPO が適用されなかったりする問題が発生する場合があるかと思います。その中でも、コンピューターの構成またはユーザーの構成のどちらかで、...

10

こんにちは!SE ブログの相馬です。       今回は、Windows Server 2016 で NTP サーバーと同期する方法について書きました。   & ...

-PowerShell
-