Sdílet prostřednictvím


Jak napsat binární modul PowerShellu

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

  1. 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ě.

    Z pohledu kódu je jádrem binárního modulu jednoduše sestavení rutiny. PowerShell bude ve skutečnosti považovat jedno sestavení rutiny za modul, pokud jde o 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.

  2. 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 extrémně jednoduchý blok kódu 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.");
          }
      }
    
    }
    
  3. Zabalte řešení a uložte balíček do umístění v cestě modulu PowerShellu.

    Globální proměnná prostředí PSModulePath popisuje výchozí cesty, které PowerShell použije 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, budete muset 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í.

    Mějte na paměti, že technicky vzato nemusíte modul instalovat nikam na 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.

  4. Importujte modul do PowerShellu pomocí volání Import-Module .

    Volání na Import-Module načte modul do aktivní paměti. Pokud používáte PowerShell 3.0 a novější, jednoduše zavolání názvu modulu v kódu ho také naimportuje; Další informace najdete v tématu Import modulu PowerShell.

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, rutiny a zprostředkovatelé v modulu snap-in jsou uživateli k dispozici, ale třída modulu snap-in v sestavení je ignorována 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 není možné importovat žádné formátování nebo typy souborů odkazovaných modulem snap-in jako součást binárního modulu. Pokud chcete importovat formátování a typy souborů, musíte vytvořit manifest modulu. Viz Jak napsat manifest modulu PowerShell.

Viz také

psaní modulu Windows PowerShellu