PowerShell で情報メッセージを出力する方法
- PowerShell での出力のエクスポート入門
- 
          
            PowerShell における Write-OutputCmdlet
- 
          
            PowerShell における Write-HostおよびWrite-InformationCmdlet
- 
          
            PowerShell における Write-WarningCmdlet
- 
          
            PowerShell における Write-DebugCmdlet
- 
          
            PowerShell における Write-ErrorCmdlet
- 
          
            PowerShell における Write-VerboseCmdlet
 
情報メッセージをコンソールに書き込むことは、ユーザーに正確なフィードバックを提供するため、どの言語においても重要なプロセスです。しかし、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