Begära bekräftelse från cmdlets
Cmdlets bör begära bekräftelse när de är på väg att göra en ändring i systemet som är utanför den Windows PowerShell miljön. Om en cmdlet till exempel är på väg att lägga till ett användarkonto eller stoppa en process, måste cmdleten kräva bekräftelse från användaren innan den fortsätter. Om en cmdlet däremot håller på att ändra en Windows PowerShell variabel behöver cmdleten inte kräva bekräftelse.
För att kunna göra en bekräftelsebegäran måste cmdleten ange att den stöder bekräftelsebegäranden och den måste anropa metoderna System.Management.Automation.Cmdlet.ShouldProcess och System.Management.Automation.Cmdlet.ShouldContinue (valfritt) för att visa ett meddelande om bekräftelsebegäran.
Stöd för bekräftelsebegäranden
För att stödja bekräftelsebegäranden måste cmdleten ange SupportsShouldProcess
parametern för attributet Cmdlet till true
. Detta aktiverar Confirm
WhatIf
cmdlet-parametrarna och som tillhandahålls av Windows PowerShell. Parametern Confirm
gör att användaren kan styra om bekräftelsebegäran visas. Parametern WhatIf
gör att användaren kan avgöra om cmdleten ska visa ett meddelande eller utföra åtgärden. Lägg inte till parametrarna Confirm
och manuellt i en WhatIf
cmdlet.
I följande exempel visas en deklaration av cmdlet-attribut som stöder bekräftelsebegäranden.
[Cmdlet(VerbsDiagnostic.Test, "RequestConfirmationTemplate1",
SupportsShouldProcess = true)]
Anropa metoderna för bekräftelsebegäran
I cmdlet-koden anropar du metoden System.Management.Automation.Cmdlet.ShouldProcess innan åtgärden som ändrar systemet utförs. Utforma cmdleten så att om anropet returnerar värdet , utförs inte åtgärden false
och cmdleten bearbetar nästa åtgärd.
Anropa ShouldContinue-metoden
De flesta cmdlets begär bekräftelse med hjälp av metoden System.Management.Automation.Cmdlet.ShouldProcess. Vissa fall kan dock kräva ytterligare bekräftelse. I dessa fall kompletterar du anropet System.Management.Automation.Cmdlet.ShouldProcess med ett anrop till metoden System.Management.Automation.Cmdlet.ShouldContinue. Detta gör att cmdleten eller providern kan styra omfånget för Ja till alla svar på bekräftelsemeddelandet.
Om en cmdlet anropar metoden System.Management.Automation.Cmdlet.ShouldContinue måste cmdleten också ange en Force
växelparameter. Om användaren anger när användaren anropar Force
cmdleten ska cmdleten fortfarande anropa System.Management.Automation.Cmdlet.ShouldProcess, men den bör kringgå anropet till System.Management.Automation.Cmdlet.ShouldContinue.
System.Management.Automation.Cmdlet.ShouldContinue kastar ett undantag när det anropas från en icke-interaktiv miljö där användaren inte kan uppmanas att göra det. Genom att Force
lägga till en parameter kan kommandot fortfarande utföras när det anropas i en icke-interaktiv miljö.
I följande exempel visas hur du anropar System.Management.Automation.Cmdlet.ShouldProcess och System.Management.Automation.Cmdlet.ShouldContinue.
if (ShouldProcess (...) )
{
if (Force || ShouldContinue(...))
{
// Add code that performs the operation.
}
}
Beteendet för ett System.Management.Automation.Cmdlet.ShouldProcess-anrop kan variera beroende på i vilken miljö cmdleten anropas. Med hjälp av föregående riktlinjer säkerställer du att cmdleten fungerar konsekvent med andra cmdlets, oavsett värdmiljö.
Ett exempel på anrop av metoden System.Management.Automation.Cmdlet.ShouldProcess finns i Så här begär du bekräftelser.
Ange effektnivå
När du skapar cmdleten anger du effektnivån (allvarlighetsgraden) för ändringen. Det gör du genom att ange värdet för ConfirmImpact
parametern för attributet Cmdlet till Hög, Medel eller Låg. Du kan bara ange ett värde ConfirmImpact
för när du även anger SupportsShouldProcess
parametern för cmdleten .
För de flesta cmdlets behöver du inte uttryckligen ange ConfirmImpact
. Använd i stället standardinställningen för parametern, som är Medel. Om du ConfirmImpact
anger Hög bekräftas åtgärden som standard. Reservera den här inställningen för mycket störande åtgärder, till exempel omformatering av en hårddiskvolym.
Anropa icke-bekräftelsemetoder
Om cmdleten eller providern måste skicka ett meddelande men inte begära bekräftelse kan den anropa följande tre metoder. Undvik att använda metoden System.Management.Automation.Cmdlet.WriteObject för att skicka meddelanden av dessa typer eftersom System.Management.Automation.Cmdlet.WriteObject-utdata överses med vanliga utdata från din cmdlet eller provider, vilket gör det svårt att skriva skript.
För att varna användaren och fortsätta med åtgärden kan cmdleten eller providern anropa metoden System.Management.Automation.Cmdlet.WriteWarning.
För att ge ytterligare information som användaren kan hämta med hjälp av parametern kan cmdleten eller providern anropa metoden
Verbose
System.Management.Automation.Cmdlet.WriteVerbose.För att ge information på felsökningsnivå för andra utvecklare eller för produktsupport kan cmdleten eller providern anropa metoden System.Management.Automation.Cmdlet.WriteDebug. Användaren kan hämta den här informationen med hjälp av
Debug
parametern .
Cmdlets och leverantörer anropar först följande metoder för att begära bekräftelse innan de försöker utföra en åtgärd som ändrar ett system utanför Windows PowerShell:
De gör det genom att anropa metoden System.Management.Automation.Cmdlet.Shouldprocess, som uppmanar användaren att bekräfta åtgärden baserat på hur användaren anropade kommandot.
Se även
Feedback
https://aka.ms/ContentUserFeedback.
Kommer snart: Under hela 2024 kommer vi att fasa ut GitHub-problem som feedbackmekanism för innehåll och ersätta det med ett nytt feedbacksystem. Mer information finns i:Skicka och visa feedback för