確認を要求する方法

この例では 、System.Management.Automation.Cmdlet.ShouldProcess メソッドと System.Management.Automation.Cmdlet.ShouldContinue メソッドを呼び出して、アクションを実行する前にユーザーに確認を要求する方法を示します。

重要

これらの要求を処理する方法のWindows PowerShell要求の確認に関するページを参照してください

確認を要求する

  1. Cmdlet 属性 SupportsShouldProcess の パラメーターが に設定されている必要があります true 。 (関数の場合、これは CmdletBinding 属性のパラメーターです)。

    [Cmdlet(VerbsDiagnostic.Test, "RequestConfirmationTemplate1",
            SupportsShouldProcess = true, ConfirmImpact = ConfirmImpact.High)]
    

    注意

    単独 SupportsShouldProcess で を使用しても、ユーザーに確認を求めるメッセージが表示される保証はありません。 プロンプトは、 の値とアクションの $ConfirmPreference 影響によって決まります。 操作 ConfirmImpact の影響の重大度を設定するには、 を使用します。

  2. ユーザーが Force 確認要求をオーバーライドできるよう、コマンドレットにパラメーターを追加します。

    [Parameter()]
    public SwitchParameter Force
    {
      get { return force; }
      set { force = value; }
    }
    private bool force;
    
  3. if System.Management.Automation.Cmdlet.ShouldProcessメソッドの戻り値を使用して、System.Management.Automation.Cmdlet.ShouldContinueメソッドが呼び出されるかどうかを判断するステートメントを追加します。

  4. if System.Management.Automation.Cmdlet.ShouldContinueメソッドの戻り値と パラメーターの値を使用して、操作を実行するかどうかを決定する 2 番目のステートメント Force を追加します。

次のコード例では 、System.Management.Automation.Cmdlet.ShouldProcess メソッドと System.Management.Automation.Cmdlet.ShouldContinue メソッドは 、System.Management.Automation.Cmdlet.ProcessRecord メソッドのオーバーライド内から呼び出されます。 ただし、他の入力処理メソッドからこれらのメソッドを呼び出す方法も可能です。

protected override void ProcessRecord()
{
  if (ShouldProcess("ShouldProcess target"))
  {
    if (Force || ShouldContinue("", ""))
    {
      // Add code that performs the operation.
    }
  }
}

参照

Writing a Windows PowerShell Cmdlet (Windows PowerShell コマンドレットの記述)