Přehled rutin

Rutina je odlehčený příkaz, který se používá v prostředí PowerShell. Běhové prostředí PowerShell vyvolá tyto rutiny v rámci kontextu skriptů automatizace, které jsou k dispozici na příkazovém řádku. Běhové prostředí PowerShellu je také vyvolává programově prostřednictvím rozhraní API PowerShellu.

Rutiny

Rutiny provádějí akci a obvykle vracejí objekt Microsoft .NET k dalšímu příkazu v kanálu. Rutina je jediný příkaz, který se účastní sémantiky kanálu PowerShellu. Patří sem binární (C#) rutiny, pokročilé funkce skriptu, CDXML a pracovní postupy.

Tato dokumentace k sadě SDK popisuje, jak vytvořit binární rutiny napsané v jazyce C#. Informace o rutinách založených na skriptech najdete v těchto tématech:

Chcete-li vytvořit binární rutinu, je nutné 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 upraveny pomocí atributů, 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, lze 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. prostředí runspace. Initialsessionstate . Obě metody poskytují programový a přístup k příkazovému řádku k funkcím rutiny.

Výrazy rutiny

V dokumentaci k rutinám prostředí PowerShell se často používají následující výrazy:

Atribut rutiny

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

Parametr rutiny

Veřejné vlastnosti definující parametry, které jsou k dispozici pro uživatele nebo k aplikaci, která spouští rutinu. Rutiny můžou mít požadované parametry, pojmenované, poziční a přepínač . Parametry přepínače umožňují definovat parametry, které jsou vyhodnocovány 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 parametr, který je jedinečný. Dobrý návrh rutiny silně naznačují, že jedinečný parametr je také povinný parametr. Další informace o sadách parametrů najdete v tématu sady parametrů rutin.

Dynamický parametr

Parametr, který je přidán do rutiny za běhu. Dynamické parametry jsou obvykle přidány do rutiny, pokud je jiný parametr nastaven na určitou hodnotu. Další informace o dynamických parametrech najdete v tématu dynamické parametry rutiny.

Metody zpracování vstupu

Třída System. Management. Automation. rutina poskytuje následující virtuální metody, které se používají ke zpracování záznamů. Všechny třídy odvozené rutiny musí přepsat jednu nebo více 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 je ProcessRecord () metoda, kterou přepisujete, protože je volána pro každý záznam, který rutina zpracovává. Naproti tomu metoda BeginProcessing () a metodu EndProcessing () jsou volány jednou 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 vytvořit rutiny, které uživateli vyzvat k zadání zpětné vazby předtím, než rutina provede změnu systému. Chcete-li použít tuto funkci, musí rutina deklarovat, že tuto ShouldProcess funkci podporuje, když deklarujete atribut rutiny a rutina musí volat metody System. Management. Automation. rutine. ShouldProcess a System. Management. Automation. rutine. ShouldContinue v rámci vstupní metody zpracování. Další informace o tom, jak tuto ShouldProcess funkci podporovat, najdete v tématu vyžádání potvrzení.

Transakce

Logická skupina příkazů, které jsou považovány za jeden úkol. Úloha se automaticky nezdařila, pokud kterýkoli příkaz ve skupině nebude úspěšný a uživatel má možnost přijmout nebo odmítnout akce provedené v rámci transakce. Chcete-li se zapojit do transakce, rutina musí deklarovat, že podporuje transakce při deklaraci atributu rutiny. podpora pro transakce byla představena v Windows PowerShell 2,0. Další informace o transakcích naleznete v tématu How to support Transactions.

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řídy .NET; Nejedná se o samostatné spustitelné soubory.
  • Rutiny se dají vytvářet až v desítkových řádcích kódu.
  • Rutiny většinou nedělají vlastní analýzu, chybovou prezentaci nebo formátování výstupu. Analýza, chyba prezentace a formátování výstupu jsou zpracovávány modulem runtime prostředí PowerShell.
  • Rutiny zpracovávají vstupní objekty z kanálu a nikoli z datových proudů textu a rutiny typicky dodávají objekty jako výstup do kanálu.
  • Rutiny jsou orientované na záznam, protože zpracovávají jeden objekt v jednom okamžiku.

Základní třídy rutiny

Windows PowerShell podporuje rutiny, které jsou odvozeny z následujících dvou základních tříd.

  • Většina rutin je založena na třídách .NET, které jsou odvozeny od základní třídy System. Management. Automation. rutiny . odvození z této třídy umožňuje, aby rutina používala minimální sadu závislostí na Windows PowerShell runtime. To má dvě výhody. První výhodou je, že objekty rutin jsou menší a v prostředí PowerShell je méně pravděpodobný vliv na změny. Druhá výhoda je, že pokud potřebujete, můžete přímo vytvořit instanci objektu rutiny a pak ji vyvolat přímo místo vyvolání prostřednictvím běhového prostředí PowerShell.

  • Složitější rutiny jsou založené na třídách .NET, které jsou odvozeny od základní třídy System. Management. Automation. PSCmdlet . Odvození z této třídy poskytuje mnohem větší přístup k modulu runtime prostředí PowerShell. Tento přístup umožňuje vaší rutině volat skripty, přistupovat k poskytovatelům a přistupovat k aktuálnímu stavu relace. (Pro přístup k aktuálnímu stavu relace získáte a nastavte proměnné a předvolby relace.) Odvození z této třídy ale zvyšuje velikost objektu rutiny a znamená, že je vaše rutina úzce spojená s aktuální verzí modulu runtime prostředí PowerShell.

Obecně platí, že pokud nepotřebujete rozšířený přístup k modulu runtime prostředí PowerShell, měli byste odvozovat z třídy System. Management. Automation. rutina . Běhový modul PowerShellu má ale rozsáhlé možnosti protokolování pro provádění rutin. Pokud váš model auditování závisí na tomto protokolování, můžete zabránit provedení rutiny v rámci jiné rutiny, a to odvozením z třídy System. Management. Automation. PSCmdlet .

Atributy rutin

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

Názvy rutin

Prostředí PowerShell používá dvojici názvů slovesa a substantivum k rutinám názvů. Například Get-Command rutina obsažená 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 provede svoji akci.

Tyto názvy jsou zadány při deklaraci třídy .NET jako rutiny. Další informace o deklaraci třídy .NET jako rutiny naleznete v tématu deklarace atributu rutiny.

Zápis kódu rutiny

Tento dokument poskytuje dva způsoby, jak zjistit, jak je kód rutiny napsán. Pokud dáváte přednost zobrazení kódu bez vysvětlení, přečtěte si Příklady kódu rutiny. Pokud dáváte přednost podrobnějším vysvětlení kódu, podívejte se na témata Kurz GetProc, Kurz StopProcnebo Kurz SelectStr.

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

Viz také

Koncepty rutin PowerShellu

Vytvoření rutiny PowerShellu

PowerShell SDK