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.

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

Skriva en Windows PowerShell-cmdlet