Notitie
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen u aan te melden of de directory te wijzigen.
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen de mappen te wijzigen.
Cmdlets moeten een bevestiging aanvragen wanneer ze op het punt staan een wijziging aan te brengen in het systeem dat zich buiten de Windows PowerShell-omgeving bevindt. Als een cmdlet bijvoorbeeld op het punt staat om een gebruikersaccount toe te voegen of een proces te stoppen, moet de cmdlet een bevestiging van de gebruiker vereisen voordat deze wordt voortgezet. Als een cmdlet daarentegen een Windows PowerShell-variabele gaat wijzigen, hoeft de cmdlet geen bevestiging te vereisen.
Als u een bevestigingsaanvraag wilt indienen, moet de cmdlet aangeven dat deze bevestigingsaanvragen ondersteunt en moet de System.Management.Automation.Cmdlet.ShouldProcess en System.Management.Automation.Cmdlet.ShouldContinue (optioneel) aanroepen om een bevestigingsaanvraagbericht weer te geven.
Ondersteunende bevestigingsaanvragen
Ter ondersteuning van bevestigingsaanvragen moet de cmdlet de SupportsShouldProcess
parameter van het cmdlet-kenmerk instellen op true
. Hiermee worden de parameters Confirm
en WhatIf
cmdlets ingeschakeld die worden geleverd door Windows PowerShell. Met de parameter Confirm
kan de gebruiker bepalen of de bevestigingsaanvraag wordt weergegeven. Met de parameter WhatIf
kan de gebruiker bepalen of de cmdlet een bericht moet weergeven of de actie moet uitvoeren. Voeg de parameters Confirm
en WhatIf
niet handmatig toe aan een cmdlet.
In het volgende voorbeeld ziet u een declaratie van cmdlet-kenmerken die bevestigingsaanvragen ondersteunt.
[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 waarmee het systeem wordt gewijzigd, wordt uitgevoerd. Ontwerp de cmdlet zodat als de aanroep een waarde van false
retourneert, de bewerking niet wordt uitgevoerd en de cmdlet de volgende bewerking verwerkt.
De methode ShouldContinue aanroepen
De meeste cmdlets vragen bevestiging met behulp van alleen de System.Management.Automation.Cmdlet.ShouldProcess methode. Voor sommige gevallen is echter mogelijk extra bevestiging vereist. Voor deze gevallen vult u de aanroep System.Management.Automation.Cmdlet.ShouldProcess aan met een aanroep naar de methode System.Management.Automation.Cmdlet.ShouldContinue. Hierdoor kan de cmdlet of provider het bereik van de Ja nauwkeuriger beheren voor alle antwoord op de bevestigingsprompt.
Als een cmdlet de methode System.Management.Automation.Cmdlet.ShouldContinue aanroept, moet de cmdlet ook een Force
switchparameter opgeven. Als de gebruiker Force
opgeeft wanneer de gebruiker de cmdlet aanroept, moet de cmdlet nog steeds System.Management.Automation.Cmdlet.ShouldProcessaanroepen, maar moet de aanroep naar System.Management.Automation.Cmdlet.ShouldContinueworden overgeslagen.
System.Management.Automation.Cmdlet.ShouldContinue genereert een uitzondering wanneer deze wordt aangeroepen vanuit een niet-interactieve omgeving waarin de gebruiker niet kan worden gevraagd. Als u een Force
parameter toevoegt, zorgt u ervoor dat de opdracht nog steeds kan worden uitgevoerd wanneer deze wordt aangeroepen in een niet-interactieve omgeving.
In het volgende voorbeeld ziet u hoe u System.Management.Automation.Cmdlet.ShouldProcess en System.Management.Automation.Cmdlet.ShouldContinueaanroept.
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 aanvragenvoor een voorbeeld van het aanroepen van de methode System.Management.Automation.Cmdlet.ShouldProcess.
Het impactniveau opgeven
Wanneer u de cmdlet maakt, geeft u het impactniveau (de ernst) van de wijziging op. Hiervoor stelt u de waarde van de parameter ConfirmImpact
van het cmdlet-kenmerk in op Hoog, Gemiddeld of Laag. U kunt alleen een waarde voor ConfirmImpact
opgeven wanneer u ook de parameter SupportsShouldProcess
voor de cmdlet opgeeft.
Voor de meeste cmdlets hoeft u niet expliciet ConfirmImpact
op te geven. Gebruik in plaats daarvan de standaardinstelling van de parameter, namelijk Normaal. Als u ConfirmImpact
instelt op Hoog, wordt de bewerking standaard bevestigd. Reserveer deze instelling voor zeer verstorende acties, zoals het opnieuw formatteren van een hardeschijfvolume.
Niet-bevestigingsmethoden aanroepen
Als de cmdlet of provider een bericht moet verzenden maar geen bevestiging aanvraagt, kan deze de volgende drie methoden aanroepen. Vermijd het gebruik van de methode System.Management.Automation.Cmdlet.WriteObject om berichten van deze typen te verzenden, omdat System.Management.Automation.Cmdlet.WriteObject uitvoer wordt vermengd met de normale uitvoer van uw cmdlet of provider, waardoor het schrijven van scripts moeilijk wordt.
Om de gebruiker te waarschuwen en door te gaan met de bewerking, kan de cmdlet of provider de methode System.Management.Automation.Cmdlet.WriteWarning aanroepen.
Als u aanvullende informatie wilt opgeven die de gebruiker kan ophalen met behulp van de parameter
Verbose
, kan de cmdlet of provider de methode System.Management.Automation.Cmdlet.WriteVerbose aanroepen.Als u details op foutopsporingsniveau wilt bieden voor andere ontwikkelaars of voor productondersteuning, kan de cmdlet of provider de methode System.Management.Automation.Cmdlet.WriteDe bug aanroepen. De gebruiker kan deze informatie ophalen met behulp van de parameter
Debug
.
Cmdlets en providers roepen eerst de volgende methoden aan om bevestiging aan te vragen voordat ze proberen een bewerking uit te voeren waarmee een systeem buiten Windows PowerShell wordt gewijzigd:
Ze doen dit door de methode System.Management.Automation.Cmdlet.ShouldProcess aan te roepen, waarmee de gebruiker wordt gevraagd om de bewerking te bevestigen op basis van de manier waarop de gebruiker de opdracht heeft aangeroepen.