Megjegyzés
Az oldalhoz való hozzáféréshez engedély szükséges. Megpróbálhat bejelentkezni vagy módosítani a címtárat.
Az oldalhoz való hozzáféréshez engedély szükséges. Megpróbálhatja módosítani a címtárat.
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
lParama "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
ListAvailableparamé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-Commandablaká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.
- 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.
- 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. - 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:
Windows PowerShell-modul írása