Poznámka:
Přístup k této stránce vyžaduje autorizaci. Můžete se zkusit přihlásit nebo změnit adresáře.
Přístup k této stránce vyžaduje autorizaci. Můžete zkusit změnit adresáře.
Binární modul může být libovolné sestavení (.dll), které obsahuje třídy rutin. Ve výchozím nastavení se při importu binárního modulu importují všechny rutiny v sestavení. Můžete ale omezit rutiny importované vytvořením manifestu modulu, jehož kořenovým modulem je sestavení. (Například klíč RutinyToExport manifestu lze použít k exportu pouze těch rutin, které jsou potřeba.) Kromě toho může binární modul obsahovat další soubory, adresářovou strukturu a další užitečné informace o správě, které jedna rutina nemůže.
Následující postup popisuje, jak vytvořit a nainstalovat binární modul PowerShellu.
Vytvoření a instalace binárního modulu PowerShellu
Vytvořte binární řešení PowerShellu (například rutinu napsanou v jazyce C#) s potřebnými možnostmi a ujistěte se, že běží správně.
Jádrem binárního modulu je z pohledu kódu sestavení rutiny. PowerShell ve skutečnosti považuje jedno sestavení rutiny za modul pro načítání a uvolňování, bez dalšího úsilí na straně vývojáře. Další informace o psaní rutiny najdete v tématu Zápis rutiny prostředí Windows PowerShell.
V případě potřeby vytvořte zbytek řešení: (další rutiny, soubory XML atd.) a popište je pomocí manifestu modulu.
Kromě popisu sestavení rutin ve vašem řešení může manifest modulu popsat, jak chcete modul exportovat a importovat, jaké rutiny budou vystaveny a jaké další soubory se do modulu dostanou. Jak už jsme uvedli dříve, PowerShell může zacházet s binární rutinou jako s modulem bez dalšího úsilí. Manifest modulu je proto užitečný hlavně pro kombinování více souborů do jednoho balíčku nebo pro explicitní řízení publikování pro dané sestavení. Další informace najdete v tématu Jak napsat manifest modulu PowerShellu.
Následující kód je zjednodušený příklad jazyka C#, který obsahuje tři rutiny ve stejném souboru, který lze použít jako modul.
using System.Management.Automation; // Windows PowerShell namespace. namespace ModuleCmdlets { [Cmdlet(VerbsDiagnostic.Test,"BinaryModuleCmdlet1")] public class TestBinaryModuleCmdlet1Command : Cmdlet { protected override void BeginProcessing() { WriteObject("BinaryModuleCmdlet1 exported by the ModuleCmdlets module."); } } [Cmdlet(VerbsDiagnostic.Test, "BinaryModuleCmdlet2")] public class TestBinaryModuleCmdlet2Command : Cmdlet { protected override void BeginProcessing() { WriteObject("BinaryModuleCmdlet2 exported by the ModuleCmdlets module."); } } [Cmdlet(VerbsDiagnostic.Test, "BinaryModuleCmdlet3")] public class TestBinaryModuleCmdlet3Command : Cmdlet { protected override void BeginProcessing() { WriteObject("BinaryModuleCmdlet3 exported by the ModuleCmdlets module."); } } }Zabalte řešení a uložte balíček do umístění v cestě modulu PowerShellu.
Globální
$env:PSModulePathproměnná prostředí popisuje výchozí cesty, které PowerShell používá k vyhledání vašeho modulu. Například běžná cesta k uložení modulu do systému by byla%SystemRoot%\Users\<user>\Documents\WindowsPowerShell\Modules\<moduleName>. Pokud nepoužíváte výchozí cesty, musíte explicitně uvést umístění modulu během instalace. Nezapomeňte vytvořit složku pro uložení modulu, protože možná budete potřebovat, aby složka ukládala více sestavení a souborů pro vaše řešení.Technicky vzato nemusíte modul instalovat nikam
$env:PSModulePath– to jsou jednoduše výchozí umístění, ve kterých bude PowerShell váš modul hledat. Je to však považováno za osvědčený postup, pokud nemáte dobrý důvod k uložení modulu někam jinam. Další informace najdete v tématu Instalace modulu PowerShell a about_PSModulePath.Importujte modul do PowerShellu pomocí volání Import-Module .
Volání do modulu Import-Module načte modul do aktivní paměti. Pokud používáte PowerShell 3.0 a novější, vyvolání příkazu z modulu v kódu ho také naimportuje. Další informace najdete v tématu Import modulu PowerShellu.
Inicializace a vyčištění kódu modulu
Pokud modul potřebuje něco udělat při importu nebo odebrání, jako je úloha zjišťování nebo inicializace, můžete implementovat rozhraní IModuleAssemblyInitializer a IModuleAssemblyCleanup rozhraní.
Poznámka:
Tento model se nedoporučuje, pokud to není nezbytně nutné. Pokud chcete zachovat výkon PowerShellu, měli byste líně načíst věci v okamžiku, kdy se příkazy volají, a ne při importu.
Import sestavení modulu snap-in jako modulů
Rutiny a zprostředkovatelé, kteří existují v sestaveních snap-in, je možné načíst jako binární moduly. Když jsou sestavení modulu snap-in načtena jako binární moduly, jsou rutiny a zprostředkovatelé v modulu snap-in k dispozici uživateli, ale třída modulu snap-in v sestavení se ignoruje a modul snap-in není zaregistrovaný. V důsledku toho rutiny modulu snap-in poskytované prostředím Windows PowerShell nemůžou modul snap-in rozpoznat, i když jsou pro relaci k dispozici rutiny a poskytovatelé.
Kromě toho se v rámci binárního modulu nedají importovat žádné formátování nebo typy souborů, na které odkazuje modul snap-in. Pokud chcete importovat formátování a typy souborů, musíte vytvořit manifest modulu. Viz Jak napsat manifest modulu PowerShell.