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


A Windows PowerShell-modulok megértése

A modulok egymáshoz kapcsolódó funkciók Windows PowerShell, amelyek egy kényelmes egységbe vannak csoportosítva (általában egyetlen könyvtárban vannak mentve). Ha egy kapcsolódó szkriptfájlokat, szerelvényeket és kapcsolódó erőforrásokat határoz meg modulként, sokkal egyszerűbben hivatkozhat, betölthet, megőrzhet és megoszthat kódot, mint egyébként.

A modul fő célja a kód modularizálásának (azaz újbóli használatának és absztrakciójának) Windows PowerShell engedélyezése. A modulok létrehozásának legapvetőbb módja például egy Windows PowerShell .psm1 fájlként való mentése. Ez lehetővé teszi a szkriptben található függvények és változók vezérlését (azaz nyilvános vagy privátként való beállítását). A szkript .psm1 fájlként való mentése lehetővé teszi bizonyos változók hatókörének szabályozását is. Végezetül pedig olyan parancsmagokat is használhat, mint az Install-Module a szkript rendszerezésére, telepítésére és a nagyobb megoldások építőelemeiként való használatára.

Modulösszetevők és -típusok

Egy modul négy alapösszetevőből áll:

  1. Valamilyen kódfájl – általában egy PowerShell-szkript vagy egy felügyelt parancsmag-szerelvény.

  2. Bármi más, amire a fenti kódfájlnak szüksége lehet, például további szerelvények, súgófájlok vagy szkriptek.

  3. A fenti fájlokat leíró jegyzékfájl, valamint metaadatok, például szerzői és verziószámozási információk.

  4. Egy könyvtár, amely az összes fenti tartalmat tartalmazza, és ahol a PowerShell ésszerűen megtalálja.

    Megjegyzés

    ezeknek az összetevőknek a egyike sem szükséges ténylegesen. Egy modul például technikailag csak egy .psm1 fájlban tárolt szkript lehet. Olyan modult is kaphat, amely csak egy jegyzékfájl, amelyet elsősorban szervezeti célokra használnak. Írhat olyan szkriptet is, amely dinamikusan hoz létre egy modult, és így valójában nincs szüksége könyvtárra, amely bármit tárolna. A következő szakaszok a modulok különböző lehetséges részeinek összekeverésével és egyeztetésével lekért modulok típusait ismertetik.

Szkriptmodulok

Ahogy a neve is mutatja, a szkriptmodul egy olyan fájl ( ), amely bármilyen érvényes Windows PowerShell .psm1 tartalmaz. A szkriptfejlesztők és rendszergazdák az ilyen típusú modulokkal olyan modulokat hozhatnak létre, amelyeknek a tagjai függvényeket, változókat és sok más funkciót tartalmaznak. A szkriptmodulok alapesetben egyszerűen Windows PowerShell szkriptek, amelyek egy másik bővítményt tartalmaznak, így a rendszergazdák importálási, exportálási és felügyeleti funkciókat használhatnak rajta.

Emellett jegyzékfájl használatával más erőforrásokat is tartalmazhat a modulban, például adatfájlokat, más függő modulokat vagy futásidejű szkripteket. A jegyzékfájlok olyan metaadatok nyomon követéséhez is hasznosak, mint a szerzői és verziószámozási információk.

Végül a szkriptmodulokat, mint minden más, nem dinamikusan létrehozott modult, egy olyan mappába kell menteni, amely a PowerShell ésszerűen felderíthető. Ez általában a PowerShell-modul elérési útján található; szükség esetén azonban explicit módon leírhatja, hogy hol van telepítve a modul. További információ: PowerShell-szkriptmodul írása.

Bináris modulok

A bináris modul egy .NET-keretrendszer szerelvény ( ), amely lefordított kódot, például .dll C#-t tartalmaz. A parancsmagfejlesztők az ilyen típusú modulokkal parancsmagokat, szolgáltatókat és másokat oszthatnak meg. (A meglévő beépülő modulok bináris modulként is használhatók.) A szkriptmodulokkal szemben a bináris modulokkal olyan parancsmagokat hozhat létre, amelyek gyorsabbak, vagy olyan funkciókat (például többszálas) használhatnak, amelyek nem olyan egyszerűen kódolvashatóak Windows PowerShell szkriptekbe.

Ahogy a szkriptmodulok esetében, itt is tartalmazhat egy jegyzékfájlt, amely leírja a modul által használt további erőforrásokat, és nyomon követi a modul metaadatait. Hasonlóképpen, érdemes a bináris modult egy, a PowerShell-modul elérési útján található mappában telepíteni. További információ: How to Write a PowerShell Binary Module (PowerShell bináris PowerShell-modul írása).

Jegyzékmodulok

A jegyzékmodul egy olyan modul, amely jegyzékfájlt használ az összes összetevő leírására, de nem tartalmaz alapvető szerelvényt vagy szkriptet. (Formálisan a jegyzékmodul üresen hagyja a ModuleToProcess jegyzékfájl vagy RootModule elemét.) Azonban továbbra is használhatja a modulok egyéb funkcióit, például a függő szerelvények betöltésének vagy bizonyos előfeldolgozási szkriptek automatikus futtatásának képességét. A jegyzékmodulokkal kényelmesen becsomagolhatja a más modulok által használt erőforrásokat, például beágyazott modulokat, szerelvényeket, típusokat vagy formátumokat. További információ: PowerShell-moduljegyzék írása.

Dinamikus modulok

A dinamikus modul egy olyan modul, amely nem töltődik be egy fájlból, vagy nem ment egy fájlba. Ehelyett egy szkript dinamikusan, a New-Module parancsmag használatával jön létre. Ez a modultípus lehetővé teszi, hogy egy szkript igény szerint hozzon létre egy modult, amit nem kell betölteni vagy állandó tárolóba menteni. A dinamikus modulok természetüknél fogva rövid életűek, ezért nem érhetők el a Get-Module parancsmag által. Hasonlóképpen, általában nincs szükségük moduljegyzékre, és valószínűleg állandó mappákra sem a kapcsolódó szerelvényeik tárolására.

Moduljegyzékek

A moduljegyzék egy .psd1 kivonattáblát tartalmazó fájl. A kivonattáblában található kulcsok és értékek a következőket tehetünk:

  • A modul tartalmának és attribútumainak leírására.

  • Határozza meg az előfeltételeket.

  • Határozza meg az összetevők feldolgozásának folyamatát.

    A modulokhoz nem szükségesek jegyzékek. A modulok hivatkoznak szkriptfájlokra ( ), szkriptmodul-fájlokra ( ), jegyzékfájlokra ( ), formázási és típusfájlokra ( ), parancsmagok és szolgáltatói szerelvények ( ), erőforrásfájlok, súgófájlok, honosítási fájlok, illetve a modul részeként csomagolt bármely más fájl- vagy .ps1 .psm1 .psd1 .ps1xml .dll erőforrástípusra. Nemzetközi szkriptek esetén a modulmappa üzenetkatalógus-fájlokat is tartalmaz. Ha jegyzékfájlt ad hozzá a modulmappába, a jegyzékfájlra való hivatkozással egyetlen egységként hivatkozhat a több fájlra.

    Maga a jegyzék a következő információkategóriákat írja le:

  • A modul metaadatai, például a modul verziószáma, a szerző és a leírás.

  • A modul importálásához szükséges előfeltételek, például a Windows PowerShell verziója, a közös nyelvi modul (CLR) verziója és a szükséges modulok.

  • Feldolgozási irányelvek, például a feldolgozni szükséges szkriptek, formátumok és típusok.

  • Az exportálni szükséges modultagok korlátozásai, például az exportálni szükséges aliasok, függvények, változók és parancsmagok.

    További információ: PowerShell-moduljegyzék írása.

Modulok tárolása és telepítése

Miután létrehozott egy szkriptet, bináris vagy jegyzékmodult, mentheti a munkáját egy olyan helyre, ahol mások is hozzáférhetnek. A modult tárolhatja például abban a rendszermappában, Windows PowerShell telepítette, vagy egy felhasználói mappában.

Általánosságban elmondható, hogy a változóban tárolt útvonalak egyikének használatával meghatározhatja, hogy hol kell telepítenie a $ENV:PSModulePath modult. Ezen útvonalak egyikének használata azt jelenti, hogy a PowerShell automatikusan megtalálja és betölti a modult, amikor egy felhasználó hívást tesz rá a kódban. Ha a modult máshol tárolja, explicit módon tudathatja a PowerShell-rel, ha paraméterként megadja a modul helyét a Install-Module hívásakor.

A mappa elérési útját a modul (ModuleBase) alapjának nevezzük, és a szkript, bináris vagy jegyzékmodul-fájl nevének meg kell egy lennie a modulmappa nevével, a következő kivételekkel:

  • A parancsmag által létrehozott dinamikus modulok neve a parancsmag paraméterének New-Module Name használatával is elnevezható.

  • A szerelvényobjektumok parancs által importált Import-Module -Assembly moduljainak neve a következő szintaxisnak megfelelően van elnevezve: "dynamic_code_module_" + assembly.GetName() .

    További információ: PowerShell-modul telepítése és about_PSModulePath.

Modul parancsmagok és változók

Az alábbi parancsmagokat és változókat a Windows PowerShell biztosítják a modulok létrehozásához és kezeléséhez.

New-Module parancsmag Ez a parancsmag egy új dinamikus modult hoz létre, amely csak a memóriában létezik. A modul egy szkriptblokkból jön létre, és annak exportált tagjai, például a függvényei és változói azonnal elérhetők maradnak a munkamenetben, és a munkamenet végéig elérhetők maradnak.

New-ModuleManifest parancsmag Ez a parancsmag egy új moduljegyzékfájlt (.psd1) hoz létre, feltölti annak értékeit, és menti a jegyzékfájlt a megadott elérési útra. Ez a parancsmag egy modul jegyzéksablonjának létrehozására is használható, amely manuálisan kitölthető.

Import-Module parancsmag Ez a parancsmag egy vagy több modult ad hozzá az aktuális munkamenethez.

Get-Module parancsmag Ez a parancsmag az aktuális munkamenetbe importált vagy importálható modulok adatait olvassa be.

Export-ModuleMember parancsmag Ez a parancsmag határozza meg a szkriptmodul-fájlból (.psm1) vagy a parancsmaggal létrehozott dinamikus modulból exportált modultagokat (például parancsmagokat, függvényeket, változókat és New-Module aliasokat).

Remove-Module parancsmag Ez a parancsmag eltávolítja a modulokat az aktuális munkamenetből.

Test-ModuleManifest parancsmag Ez a parancsmag ellenőrzi, hogy egy modul jegyzékfájlja pontosan leírja-e a modul összetevőit azáltal, hogy ellenőrzi, hogy a modul jegyzékfájljában (.psd1) szereplő fájlok valóban léteznek-e a megadott elérési utakon.

$PSScriptRoot Ez a változó tartalmazza azt a könyvtárat, amelyből a szkriptmodul végrehajtása folyamatban van. Lehetővé teszi, hogy a szkriptek a modul elérési útjának használatával hozzáférjenek más erőforrásokhoz.

$env:PSModulePath Ez a környezeti változó tartalmazza azon könyvtárak listáját, amelyekben Windows PowerShell modulok vannak tárolva. Windows PowerShell a változó értékét használja a modulok automatikus importálása és a modulok súgótémakörének frissítése során.

Lásd még:

Windows PowerShell-modul írása