Sdílet prostřednictvím


Vyžádání potvrzení rutinami

Rutiny by měly požádat o potvrzení, když se chystá provést změnu systému, který je mimo prostředí Windows PowerShell. Pokud například rutina chystá přidat uživatelský účet nebo zastavit proces, měla by rutina vyžadovat potvrzení od uživatele, než bude pokračovat. Pokud se ale rutina chystá změnit proměnnou Prostředí Windows PowerShell, nemusí rutina vyžadovat potvrzení.

Aby bylo možné provést žádost o potvrzení, musí rutina označit, že podporuje žádosti o potvrzení, a musí volat metody System.Management.Automation.Cmdlet.ShouldProcess a System.Management.Automation.Cmdlet.ShouldContinue (volitelné) metody pro zobrazení zprávy žádosti o potvrzení.

Podpora žádostí o potvrzení

Pro podporu žádostí o potvrzení musí rutina nastavit parametr SupportsShouldProcess atributu Rutina na true. To umožňuje parametry rutiny Confirm a WhatIf, které poskytuje Prostředí Windows PowerShell. Parametr Confirm uživateli umožňuje určit, jestli se zobrazí žádost o potvrzení. Parametr WhatIf umožňuje uživateli určit, jestli má rutina zobrazit zprávu nebo provést svoji akci. Do rutiny nepřidávejte parametry Confirm a WhatIf ručně.

Následující příklad ukazuje deklaraci atributu rutiny, která podporuje žádosti o potvrzení.

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

Volání metod žádosti o potvrzení

V kódu rutiny volejte metodu System.Management.Automation.Cmdlet.ShouldProcess před provedením operace, která změní systém. Navrhujte rutinu tak, aby pokud volání vrátilo hodnotu false, operace se neprovádí a rutina zpracuje další operaci.

Volání Metody ShouldContinue

Většina rutin vyžaduje potvrzení pouze pomocí metody System.Management.Automation.Cmdlet.ShouldProcess. Některé případy ale můžou vyžadovat další potvrzení. V těchto případech doplňte System.Management.Automation.Cmdlet.ShouldProcess voláním metody System.Management.Automation.Cmdlet.ShouldContinue. To umožňuje rutině nebo poskytovateli jemněji řídit rozsah Ano pro všechny odpověď na výzvu k potvrzení.

Pokud rutina volá metodu System.Management.Automation.Cmdlet.ShouldContinue, musí rutina také poskytnout parametr přepínače Force. Pokud uživatel zadá Force, když uživatel vyvolá rutinu, měla by stále volat System.Management.Automation.Cmdlet.ShouldProcess, ale měl by obejít volání System.Management.Automation.Cmdlet.ShouldContinue.

System.Management.Automation.Cmdlet.ShouldContinue vyvolá výjimku, když je volána z neinteraktivního prostředí, kde se uživatel nemůže zobrazit. Přidáním parametru Force zajistíte, že příkaz bude možné provést i po vyvolání v neinteraktivním prostředí.

Následující příklad ukazuje, jak volat System.Management.Automation.Cmdlet.ShouldProcess a System.Management.Automation.Cmdlet.ShouldContinue.

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

Chování volání System.Management.Automation.Cmdlet.ShouldProcess se může lišit v závislosti na prostředí, ve kterém je rutina vyvolána. Použití předchozích pokynů pomůže zajistit, aby se rutina chovala konzistentně s jinými rutinami bez ohledu na hostitelské prostředí.

Příklad volání metody System.Management.Automation.Cmdlet.ShouldProcess naleznete v tématu Jak vyžádat potvrzení.

Určení úrovně dopadu

Při vytváření rutiny zadejte úroveň dopadu (závažnost) změny. Uděláte to tak, že nastavíte hodnotu parametru ConfirmImpact atributu Rutiny na hodnotu Vysoká, Střední nebo Nízká. Hodnotu pro ConfirmImpact můžete zadat pouze v případě, že pro rutinu zadáte také parametr SupportsShouldProcess.

U většiny rutin nemusíte explicitně zadávat ConfirmImpact. Místo toho použijte výchozí nastavení parametru, což je Střední. Pokud nastavíte ConfirmImpact na hodnotu Vysoká, operace se ve výchozím nastavení potvrdí. Toto nastavení si zarezervujte pro vysoce rušivé akce, jako je přeformátování svazku pevného disku.

Volání metod bez potvrzení

Pokud rutina nebo poskytovatel musí odeslat zprávu, ale nemusí požádat o potvrzení, může volat následující tři metody. Nepoužívejte metodu System.Management.Automation.Cmdlet.WriteObject k odesílání zpráv těchto typů, protože System.Management.Automation.Cmdlet.WriteObject výstup je propletený s normálním výstupem rutiny nebo poskytovatele, což ztěžuje psaní skriptu.

Rutiny a poskytovatelé nejprve volají následující metody, které vyžadují potvrzení předtím, než se pokusí provést operaci, která změní systém mimo Windows PowerShell:

Dělají to voláním metody System.Management.Automation.Cmdlet.ShouldProcess, která uživatele vyzve k potvrzení operace na základě toho, jak uživatel vyvolal příkaz.

Viz také

psaní rutiny Prostředí Windows PowerShell