AvoidShouldContinueWithoutForce

重症度レベル:警告

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

Description

このルールはShouldContinueパラメータを持たずにを使う関数を検出します。 ShouldContinueを使う関数には、確認プロンプトを回避できるブールForceパラメータが必要です。

高度な関数で ShouldContinue を使用する場合は、 ShouldProcess メソッドが $trueを返した後に呼び出してください。

詳しくは「 about_Functions_CmdletBindingAttribute 」と 「about_Functions_Advanced_Methods」をご覧ください。

例

非準拠

Function Test-ShouldContinue
{
    [CmdletBinding(SupportsShouldProcess=$true)]
    Param
    (
        $MyString = 'blah'
    )

    if ($PsCmdlet.ShouldContinue('ShouldContinue Query', 'ShouldContinue Caption'))
    {
        ...
    }
}

対応

Function Test-ShouldContinue
{
    [CmdletBinding(SupportsShouldProcess=$true)]
    Param
    (
        $MyString = 'blah',
        [Switch]$Force
    )

    if ($Force -or $PsCmdlet.ShouldContinue('ShouldContinue Query', 'ShouldContinue Caption'))
    {
        ...
    }
}

ルールの設定

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

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