PowerShell で情報メッセージを出力する方法
- PowerShell での出力のエクスポート入門
-
PowerShell における
Write-Output
Cmdlet -
PowerShell における
Write-Host
およびWrite-Information
Cmdlet -
PowerShell における
Write-Warning
Cmdlet -
PowerShell における
Write-Debug
Cmdlet -
PowerShell における
Write-Error
Cmdlet -
PowerShell における
Write-Verbose
Cmdlet

情報メッセージをコンソールに書き込むことは、ユーザーに正確なフィードバックを提供するため、どの言語においても重要なプロセスです。しかし、Windows PowerShell では、メッセージを印刷する方法が複数あります。
この記事では、情報メッセージ、警告メッセージ、エラーメッセージを出力するための異なる書き込みコマンドを区別し、それらをどのように使用できるかの状況を提供します。
PowerShell での出力のエクスポート入門
異なる書き込みコマンドについて議論を始める前に、PowerShell では、単一行をシングルクォーテーション(''
)またはダブルクォーテーション(""
)で囲むことによってメッセージを出力できることに注意する価値があります。
例コード:
"Hello World!"
'Hello World'
出力:
Hello World!
Hello World
この構文は、文字列のリテラル表現と隠れた文字列パイプラインのおかげで、PowerShell で可能です。上記のコードスニペットは、以下の例コードと同等です。
例コード:
"Hello World!" | Out-Host
Out-Host
コマンドは、画面に表示用に前置きされたオブジェクトを送信します。
PowerShell における Write-Output
Cmdlet
最初の印刷方法は Write-Output
コマンドです。この cmdlet は、PowerShell スクリプト環境内のすべての印刷方法の中で最も基本的な構文です。
これは、print
や stdout
などの異なる言語の基本的な印刷方法に相当します。
例コード:
Write-Output "Hello World!"
出力:
Hello World!
PowerShell における Write-Host
および Write-Information
Cmdlet
Write-Host
コマンドは、前述の Write-Output
と類似のもう一つの印刷方法です。
このコマンドの唯一の違いは、PowerShell 5.0 で更新される前、このメソッドは -BackgroundColor
および -ForegroundColor
パラメータを使用して異なる色でメッセージを出力できることです。
前述のように、Windows PowerShell 5.0 以降、Write-Host
は Write-Information
のラッパーとなっています。これにより、Write-Host
を使用して情報ストリームに出力を発生させることが可能になります。
この cmdlet は、Write-Host
コマンドを使用して書き込まれたデータの抑制または捕捉を可能にしつつ、後方互換性を保持します。
$InformationPreference
プレファレンス変数および -InformationAction
標準パラメータは、Write-Host
メッセージには影響しません。このルールの例外は -InformationAction Ignore
で、これは実質的に Write-Host
の出力を抑制します。
Write-Host
または Write-Information
を使用して情報ストリームに書き込むことは、出力文字列に問題を引き起こしません。
また、-InformationAction
パラメータを使用すると、関数内で指定されたパラメータの値を Write-Host
ステートメントにバインドすることで、情報ストリームの可視性を操作することもできます。
たとえば、以下の例では、デフォルトで情報ストリームを無効にしますが、-InformationAction
パラメータを介して要求された場合は別です。
Write-Host 'This is a test message' -InformationAction $InformationPreference -ForegroundColor Green
PowerShell における Write-Warning
Cmdlet
Write-Warning
コマンドは、Windows PowerShell ホストに警告メッセージを書き込みます。警告イベントに対する応答は、ユーザーの $WarningPreference
変数の値と -WarningAction
標準パラメータによって異なります。
$WarningPreference
変数の有効な値は次のとおりです。
Stop
- 警告とエラーメッセージを表示し、その後実行を停止します。Inquire
- 警告メッセージを表示し、確認メッセージの形でユーザーに続行の許可を求めます。Continue
- 変数のデフォルト値。警告メッセージを表示し、その後実行します。SilentlyContinue
- 警告メッセージを表示しません。実行を続けます。
例コード:
Write-Warning "This is only a test warning notification." -WarningAction Continue
PowerShell における Write-Debug
Cmdlet
Write-Debug
コマンドは、PowerShell での印刷のもう一つの方法です。ただし、これは通常、スクリプト環境でデバッグメッセージを印刷するために開発中により多く使用されます。
デバッグメッセージはデフォルトでは表示されませんが、$debugPreference
変数を使用して変更できます。
例コード:
Write-Debug "Error on line 1. Please investigate."
$debugPreference = "Continue"
Write-Debug "Error on line 5. Please investigate."
出力:
DEBUG: Error on line 5. Please investigate.
PowerShell における Write-Error
Cmdlet
Write-Error
コマンドは、非終端エラーを出力します。デフォルトでは、エラーはエラーストリーム経由で PowerShell ホストプログラムに送信され、出力と共にエクスポートされます。
非終端エラーを出力するには、エラーメッセージ文字列、ErrorRecord
オブジェクト、または Exception
オブジェクトを入力します。そして、エクスポートするエラー記録を使用して Write-Error
の異なるパラメータを使用します。
非終端エラーはエラーストリームにエラーを書き込みますが、コマンドの処理を停止することはありません。たとえば、入力項目のセットの 1つの項目で非終端エラーが発生した場合、cmdlet は他の項目の処理を続行します。
例コード:
Write-Error "Invalid object" -ErrorId B1 -TargetObject $_
出力:
Write-Error "Invalid object" -ErrorId B1 -TargetObject $_ : Invalid object
+ CategoryInfo : NotSpecified: (:) [Write-Error], WriteErrorException
+ FullyQualifiedErrorId : B1
PowerShell における Write-Verbose
Cmdlet
Write-Verbose
コマンドは、PowerShell の詳細メッセージストリームにテキストを書き込みます。
Write-Debug
コマンドと同様に、詳細メッセージはデフォルトでは表示されませんが、$VerbosePreference
変数を使用するか、スイッチパラメータ -Verbose
を追加することで表示できます。
例コード:
Write-Verbose -Message "This will not be displayed."
Write-Verbose -Message "This will be displayed" -Verbose
出力:
VERBOSE: This will be displayed
Marion specializes in anything Microsoft-related and always tries to work and apply code in an IT infrastructure.
LinkedIn