Sdílet prostřednictvím


Principy modulu Windows PowerShellu

Modul je sada souvisejících funkcí Windows PowerShellu seskupených dohromady jako praktická jednotka (obvykle uložená v jednom adresáři). Definováním sady souvisejících souborů skriptů, sestavení a souvisejících prostředků jako modulu můžete odkazovat, načítat, uchovávat a sdílet kód mnohem snadněji, než byste jinak.

Hlavním účelem modulu je umožnit modularizaci (tj. opakované použití a abstrakci) kódu Windows PowerShellu. Nejzákladnější způsob vytvoření modulu je například jednoduše uložit skript Prostředí Windows PowerShell jako soubor .psm1. Tímto způsobem můžete řídit (tj. nastavit veřejné nebo soukromé) funkce a proměnné obsažené ve skriptu. Uložení skriptu jako souboru .psm1 také umožňuje řídit rozsah určitých proměnných. Nakonec můžete použít také rutiny, jako je Install-Module k uspořádání, instalaci a používání skriptu jako stavebních bloků pro větší řešení.

Komponenty a typy modulů

Modul se skládá ze čtyř základních komponent:

  1. Nějaký soubor kódu – obvykle skript PowerShellu nebo spravované sestavení rutiny.

  2. Cokoli jiného, co může výše uvedený soubor kódu potřebovat, například další sestavení, soubory nápovědy nebo skripty.

  3. Soubor manifestu popisující výše uvedené soubory a také ukládá metadata, jako jsou informace o autorovi a správě verzí.

  4. Adresář, který obsahuje veškerý výše uvedený obsah a nachází se tam, kde ho PowerShell dokáže přiměřeně najít.

    Poznámka:

    Žádná z těchto komponent, sama o sobě, nejsou skutečně nezbytné. Modul může být technicky vzato pouze skript uložený v souboru .psm1. Můžete také mít modul, který není nic jiného než soubor manifestu, který se používá hlavně pro účely organizace. Můžete také napsat skript, který dynamicky vytvoří modul, a proto ve skutečnosti nepotřebujete adresář k uložení čehokoli. Následující části popisují typy modulů, které můžete získat kombinováním a porovnáváním různých možných částí modulu.

Moduly skriptů

Jak už název napovídá, modul skriptu je soubor (.psm1), který obsahuje jakýkoli platný kód Windows PowerShellu. Vývojáři skriptů a správci můžou tento typ modulu použít k vytvoření modulů, jejichž členy zahrnují funkce, proměnné a další. Modul skriptu je jednoduše skript windows PowerShellu s jiným rozšířením, které správcům umožňuje používat funkce importu, exportu a správy.

Kromě toho můžete použít soubor manifestu k zahrnutí dalších prostředků do modulu, jako jsou datové soubory, další závislé moduly nebo skripty modulu runtime. Soubory manifestu jsou také užitečné pro sledování metadat, jako jsou vytváření obsahu a informace o správě verzí.

Nakonec je potřeba modul skriptu, podobně jako jakýkoli jiný modul, který není dynamicky vytvořen, uložit do složky, kterou může PowerShell přiměřeně zjistit. Obvykle se jedná o cestu modulu PowerShellu; v případě potřeby ale můžete explicitně popsat, kde je modul nainstalovaný. Další informace najdete v tématu Jak napsat modul skriptů PowerShellu.

Binární moduly

binární modul je sestavení rozhraní .NET Framework (.dll), které obsahuje zkompilovaný kód, například C#. Vývojáři rutin můžou tento typ modulu použít ke sdílení rutin, poskytovatelů a dalších. (Existující moduly snap-in lze použít také jako binární moduly.) V porovnání s modulem skriptu umožňuje binární modul vytvářet rutiny, které jsou rychlejší nebo používají funkce (například multithreading), které nejsou tak snadné kódovat ve skriptech Windows PowerShellu.

Stejně jako u skriptových modulů můžete zahrnout soubor manifestu, který popisuje další prostředky, které modul používá, a sledovat metadata o modulu. Podobně byste pravděpodobně měli binární modul nainstalovat do složky někam podél cesty k modulu PowerShellu. Další informace naleznete v tématu Jak Jak napsat binární modul PowerShellu.

Moduly manifestu

Modul manifestu je modul, který používá soubor manifestu k popisu všech jeho komponent, ale nemá žádný druh základního sestavení nebo skriptu. (Formálně modul manifestu ponechá ModuleToProcess nebo RootModule prvek manifestu prázdný.) Přesto ale můžete použít další funkce modulu, jako je například schopnost načíst závislá sestavení nebo automaticky spouštět určité skripty předzpracování. Modul manifestu můžete také použít jako pohodlný způsob zabalení prostředků, které budou používat jiné moduly, jako jsou vnořené moduly, sestavení, typy nebo formáty. Další informace najdete v tématu Jak napsat manifest modulu PowerShellu.

Dynamické moduly

dynamický modul je modul, ze kterého se nenačítá nebo neuloží do souboru. Místo toho se vytvářejí dynamicky pomocí skriptu pomocí rutiny New-Module. Tento typ modulu umožňuje skriptu vytvořit modul na vyžádání, který nemusí být načten nebo uložen do trvalého úložiště. Dynamický modul má být ze své podstaty krátkodobý, a proto k němu nemůže přistupovat rutina Get-Module. Podobně obvykle nepotřebují manifesty modulů ani nepotřebují trvalé složky k uložení souvisejících sestavení.

Manifesty modulů

Manifest modulu je soubor .psd1, který obsahuje tabulku hash. Klíče a hodnoty v tabulce hash dělají následující věci:

  • Popište obsah a atributy modulu.

  • Definujte požadavky.

  • Určete, jak se komponenty zpracovávají.

    Manifesty se pro modul nevyžadují. Moduly můžou odkazovat na soubory skriptů (.ps1), soubory modulu skriptu (.psm1), soubory manifestu (.psd1), formátování a typy souborů (.ps1xml), sestavení rutin a zprostředkovatele (.dll), soubory prostředků, soubory nápovědy, lokalizační soubory nebo jakýkoli jiný typ souboru nebo prostředku, který je součástí modulu. Pro mezinárodní skript obsahuje složka modulu také sadu souborů katalogu zpráv. Pokud do složky modulu přidáte soubor manifestu, můžete odkazovat na více souborů jako na jednu jednotku odkazováním na manifest.

    Samotný manifest popisuje následující kategorie informací:

  • Metadata o modulu, jako je číslo verze modulu, autor a popis.

  • Požadavky potřebné k importu modulu, jako je verze Windows PowerShellu, verze MODULU CLR (Common Language Runtime) a požadované moduly.

  • Direktivy zpracování, jako jsou skripty, formáty a typy ke zpracování.

  • Omezení členů modulu k exportu, jako jsou aliasy, funkce, proměnné a rutiny pro export.

    Další informace najdete v tématu Jak napsat manifest modulu PowerShellu.

Ukládání a instalace modulu

Po vytvoření skriptu, binárního souboru nebo modulu manifestu můžete svou práci uložit do umístění, ke kterému ho můžou přistupovat jiní uživatelé. Modul můžete například uložit do systémové složky, ve které je nainstalovaný Windows PowerShell, nebo ho můžete uložit do složky uživatele.

Obecně řečeno můžete určit, kde byste měli modul nainstalovat, pomocí jedné z cest uložených v proměnné $Env:PSModulePath. Použití jedné z těchto cest znamená, že PowerShell dokáže modul automaticky najít a načíst, když ho uživatel zavolá ve svém kódu. Pokud modul ukládáte někam jinam, můžete powershell explicitně inkasovat předáním umístění modulu jako parametru při volání Install-Module.

Bez ohledu na to, že cesta ke složce se označuje jako základní modulu (ModuleBase) a název skriptu, binárního souboru nebo souboru modulu manifestu by měl být stejný jako název složky modulu s následujícími výjimkami:

  • Dynamické moduly vytvořené rutinou New-Module lze pojmenovat pomocí parametru Name rutiny.

  • Moduly importované z objektů sestavení pomocí příkazu Import-Module -Assembly jsou pojmenovány podle následující syntaxe: "dynamic_code_module_" + assembly.GetName().

    Další informace najdete v tématu Instalace modulu PowerShell a about_PSModulePath.

Rutiny modulu a proměnné

Prostředí Windows PowerShell poskytuje následující rutiny a proměnné pro vytváření a správu modulů.

rutina New-Module Tato rutina vytvoří nový dynamický modul, který existuje pouze v paměti. Modul se vytvoří z bloku skriptu a jeho exportované členy, jako jsou jeho funkce a proměnné, jsou okamžitě dostupné v relaci a zůstanou dostupné, dokud se relace neskončí.

rutina New-ModuleManifest Tato rutina vytvoří nový soubor manifestu modulu (.psd1), naplní jeho hodnoty a uloží soubor manifestu do zadané cesty. Tuto rutinu lze také použít k vytvoření šablony manifestu modulu, kterou je možné vyplnit ručně.

rutina Import-Module Tato rutina přidá do aktuální relace jeden nebo více modulů.

rutina Get-Module Tato rutina načte informace o modulech, které byly nebo které lze importovat do aktuální relace.

rutina Export-ModuleMember Tato rutina určuje členy modulu (například rutiny, funkce, proměnné a aliasy), které se exportují ze souboru modulu skriptu (.psm1) nebo z dynamického modulu vytvořeného pomocí rutiny New-Module.

rutina Remove-Module Tato rutina odebere moduly z aktuální relace.

rutina Test-ModuleManifest Tato rutina ověří, že manifest modulu přesně popisuje komponenty modulu ověřením, že soubory uvedené v souboru manifestu modulu (.psd1) skutečně existují v zadaných cestách.

$PSScriptRoot Tato proměnná obsahuje adresář, ze kterého se spouští modul skriptu. Umožňuje skriptům používat cestu modulu pro přístup k jiným prostředkům.

$Env:PSModulePath Tato proměnná prostředí obsahuje seznam adresářů, ve kterých jsou uložené moduly Windows PowerShellu. Windows PowerShell používá hodnotu této proměnné při automatickém importu modulů a aktualizaci témat nápovědy pro moduly.

Viz také

psaní modulu Windows PowerShellu