Megosztás a következőn keresztül:


Bináris PowerShell-modul írása

A bináris modul bármely olyan szerelvény (.dll) lehet, amely parancsmagosztályokat tartalmaz. Alapértelmezés szerint a szerelvény összes parancsmagja a bináris modul importálásakor lesz importálva. Az importált parancsmagokat azonban korlátozhatja egy olyan moduljegyzék létrehozásával, amelynek gyökérmodulja a szerelvény. (A jegyzék cmdletsToExport kulcsa például csak a szükséges parancsmagok exportálására használható.) A bináris modul emellett további fájlokat, címtárstruktúrát és egyéb hasznos felügyeleti információkat is tartalmazhat, amelyeket egyetlen parancsmag nem tud.

Az alábbi eljárás bemutatja, hogyan hozhat létre és telepíthet PowerShell bináris modulokat.

PowerShell bináris modul létrehozása és telepítése

  1. Hozzon létre egy bináris PowerShell-megoldást (például egy C#-ban írt parancsmagot) a szükséges képességekkel, és győződjön meg arról, hogy megfelelően fut.

    Kód szempontjából a bináris modul magja egy parancsmag-szerelvény. Valójában a PowerShell egyetlen parancsmag-szerelvényt a be- és kirakodás moduljaként kezel, a fejlesztő pedig nem igényel további erőfeszítést. További információ a parancsmagok írásáról: Windows PowerShell-parancsmag írása.

  2. Szükség esetén hozza létre a megoldás többi részét: (további parancsmagokat, XML-fájlokat stb.), és írja le őket egy moduljegyzékkel.

    A megoldásban található parancsmag-szerelvények leírásán kívül a moduljegyzékből megtudhatja, hogyan szeretné exportálni és importálni a modult, milyen parancsmagok lesznek közzétéve, és milyen további fájlok kerülnek a modulba. Ahogy korábban már említettem, a PowerShell további erőfeszítés nélkül képes modulként kezelni a bináris parancsmagokat. Így a moduljegyzék elsősorban több fájl egyetlen csomagba való kombinálására, vagy egy adott szerelvény kiadványának explicit szabályozására használható. További információ: PowerShell-moduljegyzékírása.

    Az alábbi kód egy egyszerűsített C# példa, amely három parancsmagot tartalmaz ugyanabban a fájlban, amely modulként használható.

    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. Csomagolja be a megoldást, és mentse a csomagot valahová a PowerShell-modul elérési útján.

    A $env:PSModulePath globális környezeti változó azokat az alapértelmezett útvonalakat írja le, amelyeket a PowerShell a modul megkereséséhez használ. Egy modul rendszeren való mentésének gyakori elérési útja például %SystemRoot%\Users\<user>\Documents\WindowsPowerShell\Modules\<moduleName>. Ha nem használja az alapértelmezett elérési utakat, a telepítés során explicit módon meg kell adnia a modul helyét. Mindenképpen hozzon létre egy mappát a modul mentéséhez, mivel előfordulhat, hogy több szerelvény és fájl tárolására van szüksége a megoldáshoz.

    Gyakorlatilag nem kell a modult bárhol telepítenie a $env:PSModulePath modulon – ezek egyszerűen azok az alapértelmezett helyek, amelyeket a PowerShell megkeres a modulhoz. Ez azonban ajánlott eljárásnak számít, hacsak nincs jó oka arra, hogy a modult valahol máshol tárolja. További információ: PowerShell-modul telepítése és about_PSModulePath.

  4. Importálja a modult a PowerShellbe az importálási modul hívásával.

    Az Import-Module hívása betölti a modult az aktív memóriába. Ha a PowerShell 3.0-s és újabb verzióit használja, egy parancs meghívása a modulból a kódban szintén importálja azt. További információ: PowerShell-modul importálása.

Modul inicializálási és törlési kódja

Ha a modulnak importáláskor vagy eltávolításakor , például felderítési feladat vagy inicializálás során kell tennie valamit, implementálhatja a felületeket és IModuleAssemblyInitializer a IModuleAssemblyCleanup felületeket.

Megjegyzés:

Ez a minta nem ajánlott, kivéve, ha feltétlenül szükséges. A PowerShell teljesítményének megőrzése érdekében lazán töltse be a parancsokat, és ne importáláskor.

Beépülő modulok importálása modulokként

A beépülő modulokban található parancsmagok és szolgáltatók bináris modulként tölthetők be. Ha a beépülő modulok bináris modulként vannak betöltve, a beépülő modul parancsmagjai és szolgáltatói elérhetők a felhasználó számára, de a szerelvény beépülő modulja figyelmen kívül lesz hagyva, és a beépülő modul nincs regisztrálva. Ennek eredményeképpen a Windows PowerShell által biztosított beépülő modul parancsmagok nem tudják észlelni a beépülő modult, annak ellenére, hogy a parancsmagok és a szolgáltatók elérhetők a munkamenethez.

Ezenkívül a beépülő modul által hivatkozott formázási és típusok nem importálhatók bináris modul részeként. A formázási és típusok importálásához létre kell hoznia egy moduljegyzéket. Lásd: PowerShell-moduljegyzékírása.

Lásd még: