Sdílet prostřednictvím


Přehled rutin

Rutina je jednoduchý příkaz, který se používá v prostředí PowerShellu. Modul runtime PowerShellu tyto rutiny vyvolá v kontextu automatizačních skriptů, které jsou k dispozici na příkazovém řádku. Modul runtime PowerShellu je také programově vyvolá prostřednictvím rozhraní API PowerShellu.

Cmdlets

Rutiny provádějí akci a obvykle vrací objekt Microsoft .NET k dalšímu příkazu v kanálu. Cmdlet je jeden příkaz, který se účastní sémantiky roury PowerShellu. To zahrnuje binární rutiny (C#), pokročilé skriptovací funkce, CDXML a pracovní postupy.

Tato dokumentace sady SDK popisuje, jak vytvářet binární rutiny napsané v jazyce C#. Informace o rutinách založených na skriptech najdete tady:

Chcete-li vytvořit binární rutinu, musíte implementovat třídu rutiny, která je odvozena z jedné ze dvou specializovaných základních tříd rutin. Odvozená třída musí:

  • Deklarujte atribut, který identifikuje odvozenou třídu jako rutinu.
  • Definujte veřejné vlastnosti, které jsou zdobené atributy, které identifikují veřejné vlastnosti jako parametry rutiny.
  • Přepište jednu nebo více metod zpracování vstupu pro zpracování záznamů.

Sestavení, které obsahuje třídu, můžete načíst přímo pomocí rutiny Import-Module nebo můžete vytvořit hostitelskou aplikaci, která načte sestavení pomocí rozhraní API System.Management.Automation.Runspaces.InitialSessionState API. Obě metody poskytují programový i příkazový řádek přístup k funkcím rutiny.

Podmínky rutiny

V dokumentaci k rutinám PowerShellu se často používají následující termíny:

Atribut rutiny

Atribut .NET, který slouží k deklaraci třídy rutiny jako rutiny. I když PowerShell používá několik dalších atributů, které jsou volitelné, je atribut rutiny povinný. Další informace o tomto atributu naleznete v tématu Deklarace atributu rutiny.

Parametr rutiny

Veřejné vlastnosti, které definují parametry, které jsou k dispozici uživateli nebo aplikaci, která spouští rutinu. Rutiny můžou mít požadované parametry, pojmenované, poziční a přepínače. Parametry přepínače umožňují definovat parametry, které se vyhodnocují pouze v případě, že jsou parametry zadány ve volání. Další informace o různých typech parametrů naleznete v tématu Parametry rutiny.

Sada parametrů

Skupina parametrů, které lze použít ve stejném příkazu k provedení konkrétní akce. Rutina může mít více sad parametrů, ale každá sada parametrů musí mít alespoň jeden jedinečný parametr. Dobrý návrh rutiny důrazně naznačuje, že jedinečný parametr je také povinným parametrem. Další informace o sadách parametrů naleznete v tématu Sady parametrů rutiny.

Dynamický parametr

Parametr přidaný do rutiny za běhu. Dynamické parametry se obvykle přidají do rutiny, když je jiný parametr nastavený na určitou hodnotu. Další informace o dynamických parametrech naleznete v tématu rutiny dynamické parametry.

Metody zpracování vstupu

Třída System.Management.Automation.Cmdlet poskytuje následující virtuální metody, které slouží ke zpracování záznamů. Všechny odvozené třídy rutin musí přepsat jednu nebo více z prvních tří metod:

Další informace o těchto metodách naleznete v tématu Metody zpracování vstupu rutiny.

Při implementaci rutiny je nutné přepsat alespoň jednu z těchto metod zpracování vstupu. Obvykle ProcessRecord() je metoda, kterou přepíšete, protože se volá pro každý záznam, který rutina zpracovává. Naproti tomu metoda BeginProcessing() a metoda EndProcessing() se nazývají jednorázově k provedení předběžného zpracování nebo následného zpracování záznamů. Další informace o těchto metodách naleznete v tématu Metody zpracování vstupu.

Funkce ShouldProcess

PowerShell umožňuje vytvářet rutiny, které uživatele vyzve k zadání zpětné vazby, než rutina provede změnu systému. Pokud chcete tuto funkci použít, musí rutina deklarovat, že podporuje funkci ShouldProcess, když deklarujete atribut Rutina, a rutina musí volat metody System.Management.Automation.Cmdlet.ShouldProcess a System.Management.Automation.Cmdlet.ShouldContinue metody z metody zpracování vstupu. Další informace o podpoře funkcí ShouldProcess naleznete v tématu Žádost o potvrzení.

Transakce

Logická skupina příkazů, které jsou považovány za jeden úkol. Úloha automaticky selže, pokud některý příkaz ve skupině selže a uživatel má možnost přijmout nebo odmítnout akce provedené v rámci transakce. Chcete-li se účastnit transakce, musí rutina deklarovat, že podporuje transakce, když je deklarován atribut Rutina. Podpora transakcí byla zavedena ve Windows PowerShellu 2.0. Další informace o transakcích naleznete v tématu Jak podporovat transakce.

Jak se rutiny liší od příkazů

Rutiny se liší od příkazů v jiných prostředích příkazového prostředí následujícími způsoby:

  • Rutiny jsou instance tříd .NET; nejsou samostatné spustitelné soubory.
  • Rutiny je možné vytvořit z několika až desítek řádků kódu.
  • Rutiny obvykle neprovádějí vlastní analýzu, prezentaci chyb nebo formátování výstupu. Parsování, prezentace chyb a formátování výstupu se zpracovávají modulem runtime PowerShellu.
  • Rutiny zpracovávají vstupní objekty z kanálu místo datových proudů textu a rutiny obvykle do kanálu doručují objekty jako výstup.
  • Rutiny jsou orientované na záznamy, protože zpracovávají jeden objekt najednou.

Základní třídy rutin

Windows PowerShell podporuje rutiny odvozené z následujících dvou základních tříd.

  • Většina rutin je založená na třídách .NET, které jsou odvozené od třídy System.Management.Automation.Cmdlet základní třídy. Odvození z této třídy umožňuje rutině použít minimální sadu závislostí v prostředí Windows PowerShell runtime. To má dvě výhody. První výhodou je, že objekty rutin jsou menší a změny modulu runtime PowerShellu vás méně pravděpodobně ovlivní. Druhou výhodou je, že pokud potřebujete, můžete přímo vytvořit instanci objektu rutiny a pak ji vyvolat přímo namísto vyvolání prostřednictvím modulu runtime PowerShellu.

  • Složitější rutiny jsou založené na třídách .NET, které jsou odvozeny od třídy System.Management.Automation.PSCmdlet základní třídy. Odvození z této třídy poskytuje mnohem více přístupu k modulu runtime PowerShellu. Tento přístup umožňuje rutině volat skripty, přistupovat k poskytovatelům a přistupovat k aktuálnímu stavu relace. (Pokud chcete získat přístup k aktuálnímu stavu relace, získáte a nastavíte proměnné a předvolby relace.) Odvození z této třídy ale zvětšuje velikost objektu rutiny a znamená to, že je vaše rutina těsněji svázaná s aktuální verzí modulu runtime PowerShellu.

Obecně platí, že pokud nepotřebujete rozšířený přístup k modulu runtime PowerShellu, měli byste odvodit z třídy System.Management.Automation.Cmdlet. Modul runtime PowerShellu má ale rozsáhlé možnosti protokolování pro provádění rutin. Pokud model auditování závisí na tomto protokolování, můžete zabránit spuštění rutiny v jiné rutině odvozením z třídy System.Management.Automation.PSCmdlet.

Atributy rutin

PowerShell definuje několik atributů .NET, které se používají ke správě rutin, a k určení běžných funkcí, které poskytuje PowerShell a které může rutina vyžadovat. Například atributy slouží k určení třídy jako rutiny, k určení parametrů rutiny a k vyžádání ověření vstupu, aby vývojáři rutin nemuseli tuto funkci implementovat ve svém kódu rutiny. Další informace o atributech najdete v tématu atributy PowerShellu.

Názvy rutin

PowerShell používá k pojmenování rutin dvojici názvů sloves a podstatných jmen. Například rutina Get-Command zahrnutá v PowerShellu slouží k získání všech rutin, které jsou zaregistrované v příkazovém prostředí. Příkaz identifikuje akci, kterou rutina provede, a podstatné jméno identifikuje prostředek, na kterém rutina provádí svou akci.

Tyto názvy se zadají, když je třída .NET deklarována jako rutina. Další informace o deklarování třídy .NET jako rutiny naleznete v tématu Deklarace atributu rutiny.

Psaní kódu rutiny

Tento dokument nabízí dva způsoby, jak zjistit, jak se kód rutiny zapisuje. Pokud dáváte přednost zobrazení kódu bez velkého vysvětlení, přečtěte si Příklady kódu rutiny. Pokud dáváte přednost dalšímu vysvětlení kódu, podívejte se na Kurz GetProc, StopProc Tutorialnebo SelectStr Tutorial témata.

Další informace o pokynech pro psaní rutin naleznete v tématu Pokyny pro vývoj rutin.

Viz také

koncepty rutin PowerShellu

zápisu rutiny PowerShellu

sada PowerShell SDK