Cómo solicitar confirmaciones

En este ejemplo se muestra cómo llamar a los métodos System.Management.Automation.Cmdlet.ShouldProcess y System.Management.Automation.Cmdlet.ShouldContinue para solicitar confirmaciones al usuario antes de realizar una acción.

Importante

Para obtener más información sobre cómo Windows PowerShell estas solicitudes, vea Solicitar confirmación.

Para solicitar confirmación

  1. Asegúrese de que SupportsShouldProcess el parámetro del atributo Cmdlet está establecido en true . (Para las funciones, se trata de un parámetro del atributo CmdletBinding).

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

    Nota

    El SupportsShouldProcess uso de por sí solo no garantiza que se pida confirmación al usuario. La solicitud viene determinada por el valor de $ConfirmPreference y el impacto de la acción. Use ConfirmImpact para establecer la gravedad del impacto de la operación.

  2. Agregue un Force parámetro al cmdlet para que el usuario pueda invalidar una solicitud de confirmación.

    [Parameter()]
    public SwitchParameter Force
    {
      get { return force; }
      set { force = value; }
    }
    private bool force;
    
  3. Agregue una instrucción que use el valor devuelto del método if System.Management.Automation.Cmdlet.ShouldProcess para determinar si se llama al método System.Management.Automation.Cmdlet.ShouldContinue.

  4. Agregue una segunda instrucción que use el valor devuelto del método if System.Management.Automation.Cmdlet.ShouldContinue y el valor del parámetro para determinar si se debe realizar Force la operación.

Ejemplo

En el ejemplo de código siguiente, se llama a los métodos System.Management.Automation.Cmdlet.ShouldProcess y System.Management.Automation.Cmdlet.ShouldContinue desde la invalidación del método System.Management.Automation.Cmdlet.ProcessRecord. Sin embargo, también puede llamar a estos métodos desde los otros métodos de procesamiento de entrada.

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

Vea también

Escribir un cmdlet de Windows PowerShell