Bevestiging vragen vanuit cmdlets

Cmdlets moeten om bevestiging vragen wanneer ze op het punt staan een wijziging aan te brengen in het systeem dat zich buiten de Windows PowerShell omgeving. Als een cmdlet bijvoorbeeld op het punt staat een gebruikersaccount toe te voegen of een proces te stoppen, moet de cmdlet bevestiging van de gebruiker vereisen voordat deze doorgaat. Als een cmdlet daarentegen op het punt staat om een Windows PowerShell te wijzigen, hoeft de cmdlet geen bevestiging te vereisen.

Als u een bevestigingsaanvraag wilt indienen, moet de cmdlet aangeven dat deze ondersteuning biedt voor bevestigingsaanvragen en de methoden System.Management.Automation.Cmdlet.ShouldProcess en System.Management.Automation.Cmdlet.ShouldContinue (optioneel) aanroepen om een bevestigingsaanvraagbericht weer te geven.

Ondersteuningsaanvragen voor bevestiging

Ter ondersteuning van bevestigingsaanvragen moet de cmdlet de SupportsShouldProcess parameter van het kenmerk Cmdlet instellen op true . Hiermee schakelt u Confirm de WhatIf cmdlet- en -parameters en in die worden geleverd door Windows PowerShell. Met Confirm de parameter kan de gebruiker bepalen of de bevestigingsaanvraag wordt weergegeven. Met WhatIf de parameter kan de gebruiker bepalen of de cmdlet een bericht moet weergeven of de actie moet uitvoeren. Voeg de parameters en niet handmatig Confirm WhatIf toe aan een cmdlet.

In het volgende voorbeeld ziet u een declaratie van het cmdlet-kenmerk die ondersteuning biedt voor bevestigingsaanvragen.

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

De bevestigingsaanvraagmethoden aanroepen

Roep in de cmdlet-code de methode System.Management.Automation.Cmdlet.ShouldProcess aan voordat de bewerking wordt uitgevoerd waarmee het systeem wordt gewijzigd. Ontwerp de cmdlet zo dat als de aanroep een waarde van retourneert, de bewerking niet wordt uitgevoerd en de false cmdlet de volgende bewerking verwerkt.

De methode ShouldContinue aanroepen

De meeste cmdlets vragen alleen bevestiging met behulp van de methode System.Management.Automation.Cmdlet.ShouldProcess. In sommige gevallen is echter mogelijk aanvullende bevestiging vereist. Voor deze gevallen dient u de aanroep System.Management.Automation.Cmdlet.ShouldProcess aan te vullen met een aanroep naar de methode System.Management.Automation.Cmdlet.ShouldContinue. Hierdoor kan de cmdlet of provider het bereik van ja op alle antwoorden op de bevestigingsprompt beter controleren.

Als een cmdlet de methode System.Management.Automation.Cmdlet.ShouldContinue aanroept, moet de cmdlet ook een Force switchparameter opgeven. Als de gebruiker aangeeft wanneer de gebruiker de cmdlet aanroept, moet de Force cmdlet nog steeds System.Management.Automation.Cmdlet.ShouldProcessaanroepen, maar moet deze de aanroep naar System.Management.Automation.Cmdlet.ShouldContinueomzeilen.

System.Management.Automation.Cmdlet.ShouldContinue geeft een uitzondering wanneer deze wordt aangeroepen vanuit een niet-interactieve omgeving waar de gebruiker niet om kan worden gevraagd. Het toevoegen van een parameter zorgt ervoor dat de opdracht nog steeds kan worden uitgevoerd wanneer deze wordt aangeroepen Force in een niet-interactieve omgeving.

In het volgende voorbeeld ziet u hoe u System.Management.Automation.Cmdlet.ShouldProcess en System.Management.Automation.Cmdlet.ShouldContinue aanroept.

if (ShouldProcess (...) )
{
  if (Force || ShouldContinue(...))
  {
     // Add code that performs the operation.
  }
}

Het gedrag van een system.Management.Automation.Cmdlet.ShouldProcess-aanroep kan variƫren, afhankelijk van de omgeving waarin de cmdlet wordt aangeroepen. Door de vorige richtlijnen te gebruiken, zorgt u ervoor dat de cmdlet consistent werkt met andere cmdlets, ongeacht de hostomgeving.

Zie Bevestigingen aanvragen voor een voorbeeld van het aanroepen van demethode System.Management.Automation.Cmdlet.ShouldProcess.

Geef het impactniveau op

Wanneer u de cmdlet maakt, geeft u het impactniveau (de ernst) van de wijziging op. U doet dit door de waarde van de parameter van het ConfirmImpact kenmerk Cmdlet in te stellen op Hoog, Gemiddeld of Laag. U kunt een waarde voor alleen ConfirmImpact opgeven wanneer u ook de parameter voor de SupportsShouldProcess cmdlet opgeeft.

Voor de meeste cmdlets hoeft u niet expliciet op te ConfirmImpact geven. Gebruik in plaats daarvan de standaardinstelling van de parameter , die Gemiddeld is. Als u in ConfirmImpact stelt op Hoog, wordt de bewerking standaard bevestigd. Reserveer deze instelling voor zeer verstorende acties, zoals het opnieuw instellen van een hardeschijfvolume.

Niet-bevestigingsmethoden aanroepen

Als de cmdlet of provider een bericht moet verzenden maar geen bevestiging moet aanvragen, kan deze de volgende drie methoden aanroepen. Vermijd het gebruik van de methode System.Management.Automation.Cmdlet.WriteObject om dergelijke berichten te verzenden, omdat de uitvoer van System.Management.Automation.Cmdlet.WriteObject is verbonden met de normale uitvoer van uw cmdlet of provider, waardoor het schrijven van scripts moeilijk wordt.

Cmdlets en providers roepen eerst de volgende methoden aan om bevestiging aan te vragen voordat ze proberen een bewerking uit te voeren die een systeem buiten de Windows PowerShell:

Ze doen dit door de methode System.Management.Automation.Cmdlet.Shouldprocess aan te roepen, waarmee de gebruiker wordt gevraagd de bewerking te bevestigen op basis van de manier waarop de gebruiker de opdracht heeft aangeroepen.

Zie ook

Een Windows PowerShell-cmdlet schrijven