Notes
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de vous connecter ou de modifier des répertoires.
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de modifier des répertoires.
Les applets de commande doivent demander une confirmation lorsqu’elles sont sur le point d’apporter une modification au système qui se trouve en dehors de l’environnement Windows PowerShell. Par exemple, si une applet de commande est sur le point d’ajouter un compte d’utilisateur ou d’arrêter un processus, l’applet de commande doit exiger la confirmation de l’utilisateur avant de continuer. En revanche, si une applet de commande est sur le point de modifier une variable Windows PowerShell, l’applet de commande n’a pas besoin de confirmer.
Pour effectuer une demande de confirmation, l’applet de commande doit indiquer qu’elle prend en charge les demandes de confirmation, et elle doit appeler les méthodes System.Management.Automation.Cmdlet.ShouldProcess et System.Management.Automation.Cmdlet.ShouldContinue (facultatif) pour afficher un message de demande de confirmation.
Demandes de confirmation de prise en charge
Pour prendre en charge les demandes de confirmation, l’applet de commande doit définir le paramètre SupportsShouldProcess
de l’attribut Cmdlet sur true
. Cela active les paramètres d’applet de commande Confirm
et WhatIf
fournis par Windows PowerShell. Le paramètre Confirm
permet à l’utilisateur de contrôler si la demande de confirmation s’affiche. Le paramètre WhatIf
permet à l’utilisateur de déterminer si l’applet de commande doit afficher un message ou effectuer son action. N’ajoutez pas manuellement les paramètres Confirm
et WhatIf
à une applet de commande.
L’exemple suivant montre une déclaration d’attribut d’applet de commande qui prend en charge les demandes de confirmation.
[Cmdlet(VerbsDiagnostic.Test, "RequestConfirmationTemplate1",
SupportsShouldProcess = true)]
Appel des méthodes de demande de confirmation
Dans le code de l’applet de commande, appelez la méthode System.Management.Automation.Cmdlet.ShouldProcess avant l’opération qui modifie le système. Concevez l’applet de commande afin que si l’appel retourne une valeur de false
, l’opération n’est pas effectuée et que l’applet de commande traite l’opération suivante.
Appel de la méthode ShouldContinue
La plupart des applets de commande demandent une confirmation en utilisant uniquement la méthode System.Management.Automation.Cmdlet.ShouldProcess. Toutefois, certains cas peuvent nécessiter une confirmation supplémentaire. Dans ce cas, complétez l’appel System.Management.Automation.Cmdlet.ShouldProcess avec un appel à la méthode System.Management.Automation.Cmdlet.ShouldContinue. Cela permet à l’applet de commande ou au fournisseur de contrôler plus précisément l’étendue du Oui à toutes les réponses à l’invite de confirmation.
Si une applet de commande appelle la méthode System.Management.Automation.Cmdlet.ShouldContinue, l’applet de commande doit également fournir un paramètre de commutateur Force
. Si l’utilisateur spécifie Force
lorsque l’utilisateur appelle l’applet de commande, l’applet de commande doit toujours appeler System.Management.Automation.Cmdlet.ShouldProcess, mais elle doit ignorer l’appel à System.Management.Automation.Cmdlet.ShouldContinue.
System.Management.Automation.Cmdlet.ShouldContinue lève une exception lorsqu’elle est appelée à partir d’un environnement non interactif où l’utilisateur ne peut pas être invité. L’ajout d’un paramètre Force
garantit que la commande peut toujours être exécutée lorsqu’elle est appelée dans un environnement non interactif.
L’exemple suivant montre comment appeler System.Management.Automation.Cmdlet.ShouldProcess et System.Management.Automation.Cmdlet.ShouldContinue.
if (ShouldProcess (...) )
{
if (Force || ShouldContinue(...))
{
// Add code that performs the operation.
}
}
Le comportement d’un appel System.Management.Automation.Cmdlet.ShouldProcess peut varier en fonction de l’environnement dans lequel l’applet de commande est appelée. L’utilisation des instructions précédentes permet de s’assurer que l’applet de commande se comporte de manière cohérente avec d’autres applets de commande, quel que soit l’environnement hôte.
Pour obtenir un exemple d’appel de la méthode System.Management.Automation.Cmdlet.ShouldProcess, consultez Comment demander des confirmations.
Spécifier le niveau d’impact
Lorsque vous créez l’applet de commande, spécifiez le niveau d’impact (gravité) de la modification. Pour ce faire, définissez la valeur du paramètre ConfirmImpact
de l’attribut Cmdlet sur High, Medium ou Low. Vous pouvez spécifier une valeur pour ConfirmImpact
uniquement lorsque vous spécifiez également le paramètre SupportsShouldProcess
de l’applet de commande.
Pour la plupart des applets de commande, vous n’avez pas besoin de spécifier explicitement ConfirmImpact
. Utilisez plutôt le paramètre par défaut du paramètre, qui est Moyen. Si vous définissez ConfirmImpact
sur High, l’opération est confirmée par défaut. Réservez ce paramètre pour les actions hautement perturbatrices, telles que la reformatage d’un volume de disque dur.
Appel de méthodes non-confirmation
Si l’applet de commande ou le fournisseur doit envoyer un message mais pas une confirmation de demande, il peut appeler les trois méthodes suivantes. Évitez d’utiliser la méthode System.Management.Automation.Cmdlet.WriteObject pour envoyer des messages de ces types, car System.Management.Automation.Cmdlet.WriteObject sortie est entremêlée avec la sortie normale de votre applet de commande ou fournisseur, ce qui rend l’écriture de script difficile.
Pour avertir l’utilisateur et poursuivre l’opération, l’applet de commande ou le fournisseur peut appeler la méthode System.Management.Automation.Cmdlet.WriteWarning.
Pour fournir des informations supplémentaires que l’utilisateur peut récupérer à l’aide du paramètre
Verbose
, l’applet de commande ou le fournisseur peut appeler la méthode System.Management.Automation.Cmdlet.WriteVerbose.Pour fournir des détails au niveau du débogage pour d’autres développeurs ou pour la prise en charge des produits, l’applet de commande ou le fournisseur peut appeler la méthode System.Management.Automation.Cmdlet.WriteDebug. L’utilisateur peut récupérer ces informations à l’aide du paramètre
Debug
.
Les applets de commande et les fournisseurs appellent d’abord les méthodes suivantes pour demander la confirmation avant de tenter d’effectuer une opération qui modifie un système en dehors de Windows PowerShell :
Ils le font en appelant la méthode System.Management.Automation.Cmdlet.ShouldProcess, qui invite l’utilisateur à confirmer l’opération en fonction de la façon dont l’utilisateur a appelé la commande.