UseShouldProcessForStateChangingFunctions

重大度レベル: 警告

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

形容

このルールは、状態を変える動詞を持つ機能が ShouldProcess をサポートしていないものを検出します。 動詞がシステム状態を変更する関数は、実行前に変更を確認またはプレビューできる機能を ShouldProcess 支援すべきです。 この機能を有効にするには、SupportsShouldProcess引数を$true属性でCmdletBindingに設定してください。

SupportsShouldProcessの引数は自動的に関数にConfirmとWhatIfのパラメータを追加します:

  • Confirmパラメータは、パイプライン内の各オブジェクトで実行する前にユーザーにコマンドの確認を促します。
  • WhatIfパラメータは、実際にコマンドを実行しなくてもコマンドが加える変更を示します。

ShouldProcessをサポートする必要がある動詞:

  • New
  • Set
  • Remove
  • Start
  • Stop
  • Restart
  • Reset
  • Update

例

非準拠

function Set-ServiceObject
{
    [CmdletBinding()]
    param
    (
        [string]
        $Parameter1
    )
    ...
}

対応

function Set-ServiceObject
{
    [CmdletBinding(SupportsShouldProcess = $true)]
    param
    (
        [string]
        $Parameter1
    )
    ...
}

ルールの設定

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

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

こちらも参照ください