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.
Chcete-li upozornit uživatele a pokračovat v operaci, může rutina nebo poskytovatel volat System.Management.Automation.Cmdlet.WriteWarning metoda.
Pokud chcete poskytnout další informace, které může uživatel načíst pomocí parametru
Verbose
, může rutina nebo poskytovatel volat metodu System.Management.Automation.Cmdlet.WriteVerbose.Pokud chcete poskytnout podrobnosti na úrovni ladění pro jiné vývojáře nebo podporu produktů, může rutina nebo poskytovatel volat metodu System.Management.Automation.Cmdlet.WriteDebug. Uživatel může tyto informace načíst pomocí parametru
Debug
.
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.