Guide pratique pour demander des confirmations

Cet exemple montre comment appeler les méthodes System. Management. Automation. cmdlet. ShouldProcess et System. Management. Automation. cmdlet. ShouldContinue pour demander des confirmations à l’utilisateur avant qu’une action soit effectuée.

Important

pour plus d’informations sur la façon dont Windows PowerShell gère ces requêtes, consultez demande de Confirmation.

Pour demander une confirmation

  1. Assurez-vous que le SupportsShouldProcess paramètre de l’attribut d’applet de commande a la valeur true . (Pour functions, il s’agit d’un paramètre de l’attribut CmdletBinding.)

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

    Notes

    L’utilisation SupportsShouldProcess de la seule ne garantit pas que l’utilisateur est invité à confirmer l’intervention. Les invites sont déterminées par la valeur de $ConfirmPreference et l’impact de votre action. Utilisez ConfirmImpact pour définir la gravité de l’impact de votre opération.

  2. Ajoutez un Force paramètre à votre applet de commande pour permettre à l’utilisateur de remplacer une demande de confirmation.

    [Parameter()]
    public SwitchParameter Force
    {
      get { return force; }
      set { force = value; }
    }
    private bool force;
    
  3. Ajoutez une if instruction qui utilise la valeur de retour de la méthode System. Management. Automation. cmdlet. ShouldProcess pour déterminer si la méthode System. Management. Automation. cmdlet. ShouldContinue est appelée.

  4. Ajoutez une deuxième if instruction qui utilise la valeur de retour de la méthode System. Management. Automation. cmdlet. ShouldContinue et la valeur du Force paramètre pour déterminer si l’opération doit être effectuée.

Exemple

Dans l’exemple de code suivant, les méthodes System. Management. Automation. cmdlet. ShouldProcess et System. Management. Automation. cmdlet. ShouldContinue sont appelées à partir de la substitution de la méthode System. Management. Automation. cmdlet. ProcessRecord . Toutefois, vous pouvez également appeler ces méthodes à partir des autres méthodes de traitement d’entrée.

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

Voir aussi

Écriture d’une applet de commande Windows PowerShell