Come richiedere conferme

Questo esempio illustra come chiamare i metodi System.Management.Automation.Cmdlet.ShouldProcess e System.Management.Automation.Cmdlet.ShouldContinue per richiedere conferme all'utente prima di eseguire un'azione.

Importante

Per altre informazioni su come Windows PowerShell queste richieste, vedere Richiesta di conferma.

Per richiedere la conferma

  1. Assicurarsi che il SupportsShouldProcess parametro dell'attributo Cmdlet sia impostato su true . Per le funzioni si tratta di un parametro dell'attributo CmdletBinding.

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

    Nota

    SupportsShouldProcessL'uso di da solo non garantisce che all'utente venga richiesta la conferma. La richiesta di conferma è determinata dal valore di $ConfirmPreference e dall'impatto dell'azione. Usare ConfirmImpact per impostare la gravità dell'impatto dell'operazione.

  2. Aggiungere un Force parametro al cmdlet in modo che l'utente possa eseguire l'override di una richiesta di conferma.

    [Parameter()]
    public SwitchParameter Force
    {
      get { return force; }
      set { force = value; }
    }
    private bool force;
    
  3. Aggiungere un'istruzione che usa il valore restituito del metodo if System.Management.Automation.Cmdlet.ShouldProcess per determinare se viene chiamato il metodo System.Management.Automation.Cmdlet.ShouldContinue.

  4. Aggiungere una seconda istruzione che usa il valore restituito del metodo if System.Management.Automation.Cmdlet.ShouldContinue e il valore del parametro per determinare se l'operazione Force deve essere eseguita.

Esempio

Nell'esempio di codice seguente i metodi System.Management.Automation.Cmdlet.ShouldProcess e System.Management.Automation.Cmdlet.ShouldContinue vengono chiamati dall'override del metodo System.Management.Automation.Cmdlet.ProcessRecord. Tuttavia, è anche possibile chiamare questi metodi dagli altri metodi di elaborazione dell'input.

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

Vedere anche

Scrittura di un cmdlet di Windows PowerShell