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.
- Hozzon létre egy könyvtárat a modul egyes verzióihoz. A könyvtár nevébe foglalja bele a verziószámot.
- 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.
- 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:
Visszajelzés
https://aka.ms/ContentUserFeedback.
Hamarosan elérhető: 2024-ben fokozatosan kivezetjük a GitHub-problémákat a tartalom visszajelzési mechanizmusaként, és lecseréljük egy új visszajelzési rendszerre. További információ:Visszajelzés küldése és megtekintése a következőhöz: