AvoidUsingWriteHost

重大度レベル: 警告

デフォルト状態:常に有効

形容

このルールは、Write-Host動詞を使わない関数におけるShowの使用を検出します。 Write-Host ホスト内で表示専用の出力を生成するよう設計されており、色付きのテキストを印刷したり、 Read-Hostでユーザーに入力を促したりします。 出力は ToString() メソッドを用い、結果はPowerShellホストプログラムによって異なります。

Write-Hostはパイプラインに出力を送らないため、パイプラインにデータを渡すにはWrite-Outputまたは暗黙の出力が必要です。

関数で Write-Host を使わないでください。ただし、 Show 動詞は 明確にユーザーに情報を表示することを意味します。 このルールは、Show 動詞を持つ関数には適用されません。

意図に応じて、 Write-Host を Write-Output または Write-Verbose に置き換えてください。 ログ Write-Verbose 、 Write-Output をオブジェクト返却に使いましょう。

例

非準拠

function Get-MeaningOfLife
{
    Write-Host 'Computing the answer to the ultimate question of life, the universe and everything'
    Write-Host 42
}

対応

情報メッセージには Write-Verbose を使用します。 ユーザーは、Verbose パラメーターを指定して、メッセージを表示するかどうかを決定できます。

function Get-MeaningOfLife {
    [CmdletBinding()]Param() # makes it possible to support Verbose output

    Write-Verbose 'Computing the answer to the ultimate question of life, the universe and everything'
    Write-Output 42
}

function Show-Something {
    Write-Host 'Show something on screen'
}

ルールの設定

このルールは常に有効で、設定はできません。 このルールを避けるために、以下のいずれかの方法を用いてください。

  • 欲しいルールだけを含めるか、不要なルールを除外するカスタムルール設定ファイルを作成しましょう。
  • 特定のコードブロックに対してルール抑制を抑制するために、適切なルール抑制属性をコードに追加してください。 詳細については、PSScriptAnalyzerの使用に関する「抑制ルール」セクションをご覧ください。