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ítenie kell a modult egy rendszerre, hogy Ön vagy mások is használhassák. Általánosságban elmondható, hogy ez a modulfájlok (azaz a .psm1vagy a bináris szerelvény, a moduljegyzék és bármely más társított fájl) másolását foglalja magában az adott számítógép könyvtárába. Egy nagyon kicsi projekt esetében ez olyan egyszerű lehet, mint a fájlok másolása és beillesztése a Windows Intézővel egyetlen távoli számítógépre; nagyobb megoldások esetén azonban érdemes lehet kifinomultabb telepítési folyamatot használnia. Függetlenül attól, hogy a modul hogyan kerül a rendszerbe, a PowerShell számos olyan technikát használhat, amelyekkel a felhasználók megtalálhatják és használhatjá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ének szabályai

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 kapott modulokat és az Ön által másoknak terjesztett modulokat.

Modulok telepítése a PSModulePath alkalmazásban

Ha lehetséges, telepítse az összes modult a PSModulePath környezeti változóban felsorolt elérési úton, 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) tartalmazza a Windows PowerShell-modulok helyét. A parancsmagok ennek a környezeti változónak az értékére támaszkodnak a modulok megkereséséhez.

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

  • $PSHOME\Modules (%windir%\System32\WindowsPowerShell\v1.0\Modules)

    Figyelmeztetés

    Ez a hely a Windowst tartalmazó modulok számára van fenntartva. Ne telepítse a modulokat erre a helyre.

  • $HOME\Documents\WindowsPowerShell\Modules (%HOMEDRIVE%%HOMEPATH%\Documents\WindowsPowerShell\Modules)

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

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

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

    Ha hozzá szeretné adni a PSModulePath környezeti változó értékéhez tartozó modul elérési útját, 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ó munkamenetfüggetlen módosításához.

    #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, egy környezeti üzenetet kell elküldenie a módosításról. A módosítás közvetítésével más alkalmazások, például a rendszerhéj is átvehet egy módosítást. A módosítás közvetítéséhez küldjön a termék telepítési kódjának egy WM_SETTINGCHANGE üzenetet, amely lParam a "Környezet" sztringre van állítva. Mindenképpen küldje el az üzenetet, miután a modul telepítési kódja frissítette PSModulePath.

A modul könyvtárának helyes nevének használata

A jól formázott modul egy olyan modul, amely egy olyan könyvtárban van tárolva, amelynek neve megegyezik a modulkönyvtárban található legalább egy fájl alap nevével. Ha egy modul nem megfelelően formázott, a 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 modul legalább egy fájljának alapnevével.

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

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

Helytelen telepítés hatása

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

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

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

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

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

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

  • A Update-Help és Mentési súgó 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 a Windows PowerShell integrált szkriptelési környezet (ISE) Show-Command ablakából.

Modulok telepítése

Ez a szakasz a Windows PowerShell-modulok telepítésének helyét ismerteti a fájlrendszerben. A hely a modul használatától függ.

Modulok telepítése adott felhasználóhoz

Ha saját modult hoz létre, vagy egy másik féltől, például egy Windows PowerShell-közösség webhelyéről szerez be modult, é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 Modulok könyvtárba.

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

A rendszer alapértelmezés szerint hozzáadja a felhasználóspecifikus modulok könyvtárát a PSModulePath környezeti változó értékéhez.

Modulok telepítése az összes felhasználóhoz a Program Filesban

Ha azt szeretné, hogy egy modul elérhető legyen a számítógépen található összes felhasználói fiók számára, telepítse a modult a Programfájlok helyre.

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

Megjegyzés

A Program Files hely alapértelmezés szerint hozzáadódik a PSModulePath környezeti változó értékéhez a Windows PowerShell 4.0-s és újabb verzióiban. A Windows PowerShell korábbi verzióihoz manuálisan létrehozhatja a Program Files helyét (%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árban

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

A Fabrikam Technologies például egy fiktív vállalat, amely egy Windows PowerShell-modult szállít a Fabrikam Manager-termékhez. A modultelepítő létrehoz egy Modulok 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)

Ha engedélyezni szeretné a Windows PowerShell-modul felderítési funkcióinak a Fabrikam modul megkeresését, 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 használ, telepítse a modult a %ProgramFiles%\Common Files\Modules alkönyvtár modulspecifikus alkönyvtárában.

Az alábbi példában a Fabrikam modul a %ProgramFiles%\Common Files\Modules alkönyvtár fabrikam alkönyvtárában van telepítve. Vegye figyelembe, hogy minden modul saját alkönyvtárában található a Modulok alkönyvtárban.

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

Ezután a telepítő biztosítja a PSModulePath környezeti változó értékét, amely tartalmazza a Common Files\Modules alkönyvtár 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 kövesse az alábbi eljárást.

  1. Hozzon létre egy könyvtárat a modul minden verziójához. Adja meg a verziószámot a címtár nevében.
  2. Hozzon létre egy moduljegyzéket a modul minden verziójához. A jegyzékben szereplő ModuleVersion kulcs értékébe írja be a modul verziószámát. Mentse a jegyzékfájlt (.psd1) a modul verzióspecifikus könyvtárában.
  3. Adja hozzá a modul gyökérmappájának 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ásához a végfelhasználó a Import-Module parancsmag MinimumVersion vagy RequiredVersion paramétereit használhatja.

Ha például a Fabrikam modul a 8.0-s és a 9.0-s verzióban érhető el, a Fabrikam modul könyvtárszerkezete 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 elérési útját 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)

A lépések elvégzése után a Get-Module parancsmag ListAvailable paramétere mindkét Fabrikam-modult lekéri. Egy adott modul importálásához használja a Import-Module parancsmag MinimumVersion vagy RequiredVersion paramétereit.

Ha mindkét modul ugyanabba a munkamenetbe van importálva, és a modulok azonos nevű parancsmagokat tartalmaznak, az utolsóként importált parancsmagok a munkamenetben lesznek érvényben.

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

Parancsnévütközések akkor fordulhatnak elő, ha a modul által exportált parancsok neve megegyezik a felhasználó munkamenetének parancsaival.

Ha egy munkamenet két azonos nevű parancsot tartalmaz, a Windows PowerShell az elsőbbséget élvező parancstípust futtatja. Ha egy munkamenet két, azonos nevű és azonos típusú parancsot tartalmaz, a Windows PowerShell a munkamenethez legutóbb hozzáadott parancsot futtatja. Ha alapértelmezés szerint nem futtatott parancsot szeretne futtatni, a felhasználók a modul nevével minősíthetik a parancsnevet.

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

Microsoft.PowerShell.Utility\Get-Date

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

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

Támogatási útvonalak nem Windows rendszerű rendszereken

A nem Windows-platformok a kettőspont (:) karaktert elérési útelválasztóként, a perjelet (/) pedig könyvtárelválasztóként használják. A [System.IO.Path] osztály statikus tagokat használ, amelyekkel a kód bármilyen platformon használható:

  • [System.IO.Path]::PathSeparator – a gazdaplatform elérési útjainak elválasztásához használt karaktert adja vissza.
  • [System.IO.Path]::DirectorySeparatorChar – a címtárneveknek a gazdagépplatform elérési útjával való elválasztásához használt karaktert adja vissza

Ezeket a statikus tulajdonságokat használhatja a ; és \ karakterek helyére elérésiút-sztringek létrehozásakor.

Lásd még:

parancs_elsőbbségéről

Windows PowerShell-modul írása