Pokyny, které byste měli zvážit při vývoji rutin
Tato část popisuje pokyny, které byste měli zvážit, abyste zajistili dobré vývojové a uživatelské prostředí. Někdy můžou platit a někdy ne.
Pokyny k návrhu
Při navrhování rutin byste měli zvážit následující pokyny. Když najdete pokyny k návrhu, které platí pro vaši situaci, podívejte se na pokyny pro kód, kde najdete podobné pokyny.
Podpora parametru InputObject (AD01)
Protože Windows PowerShell přímo s objekty Microsoft .NET Framework, je často k dispozici objekt .NET Framework, který přesně odpovídá typu, který uživatel potřebuje k provedení konkrétní operace. InputObject
je standardní název parametru, který přijímá takový objekt jako vstup.
Ukázková rutina v kurzu StopProc například definuje parametr typu Stop-Proc
InputObject
Proces, který podporuje vstup z kanálu. Uživatel může získat sadu procesních objektů, manipulovat s nimi, vybrat přesné objekty, které se mají zastavit, a pak je předat přímo Stop-Proc
do rutiny.
Podpora parametru vynucení (AD02)
V některých případech rutina potřebuje chránit uživatele před provedením požadované operace. Taková rutina by měla podporovat parametr Force, který uživateli umožní přepsat tuto ochranu, pokud má uživatel oprávnění k provedení operace.
Například rutina Remove-Item obvykle neodebere soubor jen pro čtení. Tato rutina ale podporuje parametr Force, aby uživatel mohl vynutit odebrání souboru jen pro čtení. Pokud už uživatel má oprávnění k úpravě atributu jen pro čtení a uživatel soubor odebere, použití parametru Force operaci zjednoduší. Pokud ale uživatel nemá oprávnění k odebrání souboru, nemá parametr Force žádný vliv.
Zpracování přihlašovacích údajů prostřednictvím Windows PowerShell (AD03)
Rutina by měla definovat parametr Credential
pro reprezentaci přihlašovacích údajů. Tento parametr musí být typu System.Management.Automation.PSCredential a musí být definován pomocí deklarace atributu Credential. Tato podpora automaticky vyzve uživatele k zadání uživatelského jména, hesla nebo obou, pokud se přímo nezadá úplné přihlašovací údaje. Další informace o atributu Credential najdete v tématu Deklarace atributu Credential.
Podpora parametrů kódování (AD04)
Pokud vaše rutina čte nebo zapisuje text do nebo z binárního formátu, jako je zápis nebo čtení ze souboru v systému souborů, musí mít rutina parametr Encoding, který určuje, jak se text kóduje v binární podobě.
Testovací rutiny by měly vracet logickou hodnotu (AD05)
Rutiny, které provádějí testy svých prostředků, by měly do kanálu vrátit typ System.Boolean, aby je bylo možné použít v podmíněných výrazech.
Pokyny pro kód
Při psaní kódu rutiny byste měli zvážit následující pokyny. Když najdete pokyny, které platí pro vaši situaci, podívejte se na pokyny k návrhu, kde najdete podobné pokyny.
Dodržujte zásady vytváření názvů tříd rutin (AC01)
Pomocí standardních konvencí pro vytváření názvů můžete zajistit, aby rutiny lépe zjišťovatelné a pomohly uživateli přesně pochopit, co tyto rutiny dělají. Tento postup je zvlášť důležitý pro ostatní vývojáře, kteří používají Windows PowerShell, protože rutiny jsou veřejné typy.
Definování rutiny ve správném oboru názvů
Za normálních okolností definujete třídu pro rutinu v .NET Framework, který připojí ". Příkazy" k oboru názvů, který představuje produkt, ve kterém se rutina spouští. Například rutiny, které jsou součástí Windows PowerShell jsou definovány v oboru Microsoft.PowerShell.Commands
názvů .
Pojmete třídu rutiny tak, aby odpovídala názvu rutiny.
Když pojmenujte třídu .NET Framework, která implementuje rutinu , pojmenujte třídu " ", kde zástupné symboly a nahradíte slovesem a podstatné jméno použité pro název <Verb><Noun><Command> <Verb> <Noun> rutiny. Například rutinu Get-Process implementuje třída s názvem GetProcessCommand
.
Pokud žádný vstup kanálu nepřepíše metodu BeginProcessing (AC02)
Pokud vaše rutina nepřijímá vstupy z kanálu, zpracování by mělo být implementováno v metodě System.Management.Automation.Cmdlet.BeginProcessing. Použití této metody umožňuje Windows PowerShell zachovat řazení mezi rutinami. První rutina v kanálu vždy vrátí své objekty předtím, než zbývající rutiny v kanálu kanálu příležitosti ke spuštění zpracování.
Zpracování žádostí o zastavení potlačí metodu StopProcessing (AC03)
Přepište metodu System.Management.Automation.Cmdlet.StopProcessing tak, aby vaše rutina zpracuje signál stop. Dokončení některých rutin trvá dlouhou dobu a umožňují dlouho mezi voláními modulu runtime Windows PowerShell, například když rutina blokuje vlákno v dlouho běžících voláních RPC. To zahrnuje rutiny, které pro volání metody System.Management.Automation.Cmdlet.WriteObject, metody System.Management.Automation.Cmdlet.WriteError a dalších mechanismů zpětné vazby, které mohou trvat delší dobu. V těchto případech může být nutné, aby uživatel těmto rutinám poslal signál k zastavení.
Implementace rozhraní IDisposable (AC04)
Pokud vaše rutina obsahuje objekty, které metoda System.Management.Automation.Cmdlet.ProcessRecord neuškodí (zapisují do kanálu), může vaše rutina vyžadovat další vyřazení objektů. Pokud například vaše rutina otevře popisovač souboru ve své metodě System.Management.Automation.Cmdlet.BeginProcessing a udržuje popisovač otevřený pro použití metodou System.Management.Automation.Cmdlet.ProcessRecord, musí být tento popisovač na konci zpracování uzavřen.
Modul runtime Windows PowerShell ne vždy volá metodu System.Management.Automation.Cmdlet.EndProcessing. Například metoda System.Management.Automation.Cmdlet.EndProcessing nemusí být volána, pokud je rutina zrušena uprostřed své operace nebo pokud dojde k ukončující chybě v jakékoli části rutiny. Proto by třída .NET Framework pro rutinu, která vyžaduje vyčištění objektu, měla implementovat kompletní vzor rozhraní System.IDisposable, včetně finalizační metody, aby modul runtime Windows PowerShell mohl na konci zpracování volat metody System.Management.Automation.Cmdlet.EndProcessing a System.IDisposable.Dispose*.
Použití typů parametrů s popisem serializace (AC05)
Chcete-li podporovat spouštění rutiny na vzdálených počítačích, použijte typy, které lze snadno serializovat na klientském počítači a potom dosa potom dosaží na serverový počítač. Následující typy jsou vhodné pro serializaci.
Primitivní typy:
Bajt, SByte, Decimal, Single, Double, Int16, Int32, Int64, Uint16, UInt32 a UInt64.
Boolean, Guid, Byte[], TimeSpan, DateTime, Uri a Version.
Char, String, XmlDocument.
Předdefinované typy rehydarytable:
PSPrimitiveDictionary
Přepínací parametr
PSListModifier
Přihlašovací údaje PSCredential
IP Adresa, MailAddress
Cultureinfo
X509Certificate2, X500DistinguishedName
DirectorySecurity, FileSecurity, RegistrySecurity
Další typy:
Securestring
Kontejnery (seznamy a slovníky výše uvedeného typu)
Použití SecureString pro citlivá data (AC06)
Při zpracování citlivých dat vždy používejte datový typ System.Security.Securestring. To může zahrnovat vstup kanálu do parametrů a také vrácení citlivých dat do kanálu.
Viz také
Pokyny, které je nutné dodržovat při vývoji rutin
Váš názor
https://aka.ms/ContentUserFeedback.
Připravujeme: V průběhu roku 2024 budeme postupně vyřazovat problémy z GitHub coby mechanismus zpětné vazby pro obsah a nahrazovat ho novým systémem zpětné vazby. Další informace naleznete v tématu:Odeslat a zobrazit názory pro