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


PowerShell-modul telepítése

Miután létrehozta a PowerShell-modult, valószínűleg telepíteni szeretné a modult egy rendszeren, hogy Ön vagy mások is használják. Ez általában a modulfájlok (például a .psm1 vagy a bináris szerelvény, a moduljegyzék és az egyéb társított fájlok) ezen a számítógépen található könyvtárba történő másolását jelenti. Egy nagyon kis projekt esetén ez akár olyan egyszerű is lehet, mint a fájlok másolása és beillesztése az Windows Explorerrel egyetlen távoli számítógépre; nagyobb megoldások esetén azonban ennél kifinomultabb telepítési folyamatot is használhat. Függetlenül attól, hogyan jut el a modul a rendszerbe, a PowerShell számos olyan technikát használhat, amelyek lehetővé teszi a felhasználók számára, hogy megkeressék és használják a modulokat. Ezért a telepítés fő problémája annak biztosítása, hogy a PowerShell megtalálja a modult. További információ: PowerShell-modul importálása.

Modulok telepítésére vonatkozó szabályok

Az alábbi információk az összes modulra vonatkoznak, beleértve a saját használatra létrehozott modulokat, a más felektől származó modulokat és a másoknak terjesztett modulokat.

Modulok telepítése a PSModulePath-ban

Amikor csak lehetséges, telepítse az összes modult a PSModulePath környezeti változóban felsorolt elérési útra, vagy adja hozzá a modul elérési útját a PSModulePath környezeti változó értékéhez.

A PSModulePath környezeti változó ( $Env:PSModulePath ) a modulok Windows PowerShell tartalmazza. A parancsmagok ennek a környezeti változónak az értékére támaszkodva keresnek modulokat.

Alapértelmezés szerint a PSModulePath környezeti változó értéke a következő rendszer- és felhasználóimodul-könyvtárakat tartalmazza, de hozzáadhatja és szerkesztheti az értéket.

  • $PSHome\Modules (%Windir%\System32\WindowsPowerShell\v1.0\Modules)

    Figyelmeztetés

    Ez a hely olyan modulok számára van fenntartva, amelyek a Windows. Ne telepítsen modulokat erre a helyre.

  • $Home\Documents\WindowsPowerShell\Modules (%UserProfile%\Documents\WindowsPowerShell\Modules)

  • $Env:ProgramFiles\WindowsPowerShell\Modules (%ProgramFiles%\WindowsPowerShell\Modules)

    A PSModulePath környezeti változó értékének lekért értékéhez használja az alábbi parancsok egyikét.

    $Env:PSModulePath
    [Environment]::GetEnvironmentVariable("PSModulePath")
    

    A PSModulePath környezeti változó értékének modulútvonalának hozzáadásához használja a következő parancsformátumot. Ez a formátum a System.Environment osztály SetEnvironmentVariable metódusát használja a PSModulePath környezeti változó munkamenet-független módosítása érdekében.

    #Save the current value in the $p variable.
    $p = [Environment]::GetEnvironmentVariable("PSModulePath")
    
    #Add the new path to the $p variable. Begin with a semi-colon separator.
    $p += ";C:\Program Files (x86)\MyCompany\Modules\"
    
    #Add the paths in $p to the PSModulePath value.
    [Environment]::SetEnvironmentVariable("PSModulePath",$p)
    

    Fontos

    Miután hozzáadta a PSModulePath elérési útját, a módosításról környezeti üzenetet kell küldenie. A módosítás szórása lehetővé teszi, hogy más alkalmazások, például a rendszerhéj is átvehedhed a változást. A módosítás szórása érdekében a termék telepítési kódja küldjön egy WM_SETTINGCHANGE az lParam "Environment" sztringre beállított üzenettel. Mindenképpen küldje el az üzenetet, miután a modul telepítési kódja frissítette a PSModulePath kódot.

A megfelelő modulkönyvtár nevének használata

A jól formázott modulok olyan modulok, amelyek egy olyan könyvtárban vannak tárolva, amely ugyanazokkal a névvel rendelkezik, mint a modulkönyvtárban található legalább egy fájl alapneve. Ha egy modul nem jól formázott, Windows PowerShell nem ismeri fel modulként.

A fájl "alapneve" a fájlnévkiterjesztés nélküli név. Egy jól formázott modulban a modulfájlokat tartalmazó könyvtár nevének meg kell egyeznie a modulban található legalább egy fájl alapnevének.

A Fabrikam-mintamodulban például a modulfájlokat tartalmazó könyvtár neve "Fabrikam", és legalább egy fájl rendelkezik a "Fabrikam" alapnévvel. Ebben az esetben a Fabrikam.psd1 és Fabrikam.dll a "Fabrikam" alapnévvel.

C:\Program Files
  Fabrikam Technologies
    Fabrikam Manager
      Modules
        Fabrikam
          Fabrikam.psd1 (module manifest)
          Fabrikam.dll (module assembly)

A helytelen telepítés hatása

Ha a modul nem megfelelő, és a helye nem szerepel a PSModulePath környezeti változó értékében, a Windows PowerShell alapszintű felderítési funkciói, például a következők nem működnek.

  • A modul automatikus betöltése funkció nem tudja automatikusan importálni a modult.

  • A ListAvailable Get-Module parancsmag paramétere nem találja a modult.

  • Az Import-Module parancsmag nem találja a modult. A modul importáláshoz meg kell adnia a gyökérmodul-fájl vagy a modul jegyzékfájlja teljes elérési útját.

    A további funkciók, például az alábbiak, csak akkor működnek, ha a modult importálják a munkamenetbe. A PSModulePath környezeti változó megfelelő formázott moduljaiban ezek a funkciók akkor is működnek, ha a modult nem importálja a munkamenetbe.

  • A Get-Command parancsmag nem talál parancsokat a modulban.

  • Az Update-Help és a Save-Help parancsmagok nem tudják frissíteni vagy menteni a modul súgóját.

  • A Show-Command parancsmag nem találja és nem jeleníti meg a parancsokat a modulban.

    A modul parancsai hiányoznak az integrált Show-Command parancsfájl-Windows PowerShell (ISE) ablakából.

Modulok telepítésének helye

Ez a szakasz azt ismerteti, hogy a fájlrendszerben hol kell telepíteni Windows PowerShell modulokat. A hely a modul használatával függ.

Modulok telepítése egy adott felhasználó számára

Ha saját modult hoz létre, vagy egy másik féltől kap modult, például egy Windows PowerShell közösségi webhelyről, és azt szeretné, hogy a modul csak a felhasználói fiókjához legyen elérhető, telepítse a modult a felhasználóspecifikus Modules könyvtárba.

$home\Documents\WindowsPowerShell\Modules\<Module Folder>\<Module Files>

A felhasználóspecifikus Modules könyvtár alapértelmezés szerint hozzá lesz adva a PSModulePath környezeti változó értékéhez.

Modulok telepítése minden felhasználó számára a Program Filesban

Ha azt szeretné, hogy egy modul a számítógép összes felhasználói fiókja számára elérhető legyen, telepítse a modult a Program Files (Programfájlok) helyen.

$Env:ProgramFiles\WindowsPowerShell\Modules\<Module Folder>\<Module Files>

Megjegyzés

A programfájlok helye alapértelmezés szerint hozzá lesz adva a PSModulePath környezeti változó értékéhez Windows PowerShell 4.0-s és újabb Windows PowerShell esetében. A Windows PowerShell korábbi verziói esetében manuálisan hozhatja létre a Program Files helyet (%ProgramFiles%\WindowsPowerShell\Modules), és hozzáadhatja ezt az elérési utat a PSModulePath környezeti változóhoz a fent leírtak szerint.

Modulok telepítése egy termékkönyvtárba

Ha a modult más feleknek terjeszti, használja a fent leírt alapértelmezett Program Files helyet, vagy hozzon létre saját vállalatspecifikus vagy termékspecifikus alkönyvtárat a %ProgramFiles% könyvtárból.

A Fabrikam Technologies, egy fiktív vállalat például egy új modult Windows PowerShell a Fabrikam Manager termékhez. A modul telepítője létrehoz egy Modules alkönyvtárat a Fabrikam Manager termék alkönyvtárában.

C:\Program Files
  Fabrikam Technologies
    Fabrikam Manager
      Modules
        Fabrikam
          Fabrikam.psd1 (module manifest)
          Fabrikam.dll (module assembly)

Ahhoz, hogy a Windows PowerShell modulfelderítési funkciók megtalálják a Fabrikam modult, a Fabrikam modul telepítője hozzáadja a modul helyét a PSModulePath környezeti változó értékéhez.

$p = [Environment]::GetEnvironmentVariable("PSModulePath")
$p += ";C:\Program Files\Fabrikam Technologies\Fabrikam Manager\Modules\"
[Environment]::SetEnvironmentVariable("PSModulePath",$p)

Modulok telepítése a Common Files könyvtárban

Ha egy modult egy termék több összetevője vagy egy termék több verziója is használ, telepítse a modult a %ProgramFiles%\Common Files\Modules alkönyvtár modulspecifikus alkönyvtárában.

A következő példában a Fabrikam modul az alkönyvtár Fabrikam %ProgramFiles%\Common Files\Modules alkönyvtárában van telepítve. Vegye figyelembe, hogy minden modul a Modules alkönyvtárban található a saját alkönyvtárában.

C:\Program Files
  Common Files
    Modules
      Fabrikam
        Fabrikam.psd1 (module manifest)
        Fabrikam.dll (module assembly)

Ezután a telepítő biztosítja, hogy a PSModulePath környezeti változó tartalmazza a közös fájlok moduljainak alkönyvtárának elérési útját.

$m = $env:ProgramFiles + '\Common Files\Modules'
$p = [Environment]::GetEnvironmentVariable("PSModulePath")
$q = $p -split ';'
if ($q -notContains $m) {
    $q += ";$m"
}
$p = $q -join ';'
[Environment]::SetEnvironmentVariable("PSModulePath", $p)

Modul több verziójának telepítése

Ugyanazon modul több verziójának telepítéséhez használja az alábbi eljárást.

  1. Hozzon létre egy könyvtárat a modul egyes verzióihoz. A könyvtár nevébe foglalja bele a verziószámot.
  2. Hozzon létre egy moduljegyzéket a modul egyes verzióihoz. A ModuleVersion kulcs értékében a jegyzékfájlban adja meg a modul verziószámát. Mentse a jegyzékfájlt (.psd1) a modul verzióspecifikus könyvtárába.
  3. Adja hozzá a modul gyökérmappa elérési útját a PSModulePath környezeti változó értékéhez az alábbi példákban látható módon.

A modul egy adott verziójának importáláshoz a végfelhasználó használhatja az Import-Module parancsmag vagy MinimumVersion RequiredVersion paramétereit.

Ha például a Fabrikam modul elérhető a 8.0-s és 9.0-s verziókban, a Fabrikam-modul könyvtárstruktúrája az alábbihoz hasonló lehet.

C:\Program Files
Fabrikam Manager
 Fabrikam8
   Fabrikam
     Fabrikam.psd1 (module manifest: ModuleVersion = "8.0")
     Fabrikam.dll (module assembly)
 Fabrikam9
   Fabrikam
     Fabrikam.psd1 (module manifest: ModuleVersion = "9.0")
     Fabrikam.dll (module assembly)

A telepítő mindkét modulútvonalat hozzáadja a PSModulePath környezeti változó értékéhez.

$p = [Environment]::GetEnvironmentVariable("PSModulePath")
$p += ";C:\Program Files\Fabrikam\Fabrikam8;C:\Program Files\Fabrikam\Fabrikam9"
[Environment]::SetEnvironmentVariable("PSModulePath",$p)

Ha ezek a lépések befejeződtek, a Get-Module parancsmag ListAvailable paramétere mindkét Fabrikam-modult megkapja. Egy adott modul importáláshoz használja az Import-Module parancsmag vagy MinimumVersion RequiredVersion paramétereit.

Ha mindkét modul ugyanabba a munkamenetbe van importálva, és a modulok azonos nevekkel tartalmazó parancsmagokat tartalmaznak, az utolsóként importált parancsmagok a munkamenetben hatók meg.

Parancsnév-ütközések kezelése

A parancsnév-ütközések akkor fordulhatnak elő, ha a modul által exportálandó parancsok neve megegyezik a felhasználói munkamenetben található parancsokkal.

Ha egy munkamenet két azonos nevű parancsot tartalmaz, a Windows PowerShell futtatja az elsőbbséget élvező parancstípust. Ha egy munkamenet két parancsot tartalmaz, amelyek neve és típusa azonos, a Windows PowerShell a munkamenethez legutóbb hozzáadott parancsot futtatja. Az alapértelmezés szerint nem futtatott parancsok futtatásához a felhasználók a modul nevével minősítheti a parancs nevét.

Ha például a munkamenet tartalmaz egy függvényt és a parancsmagot, a Windows PowerShell alapértelmezés szerint Get-Date Get-Date futtatja a függvényt. A parancsmag futtatásához írja előtaggal a parancsot a modul nevével, például:

Microsoft.PowerShell.Utility\Get-Date

A névütközés elkerülése érdekében a modul szerzői a moduljegyzék DefaultCommandPrefix kulcsával megadhatnak egy főnévi előtagot a modulból exportált összes parancshoz.

A felhasználók a parancsmag Előtag paraméterének használatával Import-Module alternatív előtagot használhatnak. Az Előtag paraméter értéke elsőbbséget élvez a DefaultCommandPrefix kulcs értékével.

Támogató útvonalak nem Windows rendszereken

A nem Windows platformok a kettőspont ( ) karaktert használják elérésiút-elválasztóként, és egy perjel ( ) karaktert : / könyvtárelválasztóként. A osztály statikus tagokkal rendelkezik, amelyek segítségével a kód bármely [System.IO.Path] platformon használható:

  • [System.IO.Path]::PathSeparator – a gazdaplatform elérési útjának elválasztása a PATH környezeti változóban használt karaktert adja vissza
  • [System.IO.Path]::DirectorySeparatorChar – visszaadja a könyvtárneveknek a gazdaplatform elérési útján való elválasztása által használt karaktert

Ezeket a statikus tulajdonságokat a és a karakter helyére használhatja elérésiút-sztringek ; \ szerkesztésekor.

Lásd még:

about_Command_Precedence

Windows PowerShell-modul írása