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.
Rövid leírás
Ez a cikk ismerteti a PowerShell-modulok telepítését, importálását és használatát.
Hosszú leírás
A PowerShell egy szkriptnyelv és egy parancshéj. A nyelv kulcsszavakból áll, amelyek biztosítják a feldolgozás szerkezetét és logikáját, valamint a munkát végző parancsokból. A PowerShell parancsai szkriptek, függvények vagy parancsmagokként vannak implementálva.
A modul egy önálló, újrafelhasználható egység, amely parancsmagokat, szolgáltatókat, függvényeket, változókat és más típusú erőforrásokat tartalmazhat, amelyek egyetlen egységként importálhatók.
A PowerShell modulok alapkészletét tartalmazza. Szükség szerint további modulokat is telepíthet. Alapértelmezés szerint a telepített modulok automatikusan betöltődnek, amikor először használ egy parancsot egy modulból. A változó segítségével $PSModuleAutoloadingPreference engedélyezheti, letilthatja és konfigurálhatja a modulok automatikus betöltését. További információ a about_Preference_Variablescímű részben található.
A munkamenet során eltávolíthatja vagy újratöltheti. A parancsmag használatával Remove-Module eltávolíthat egy modult a munkamenetből. A parancsmag használatával Import-Module töltsön be egy modult.
A modulok C# nyelven írt lefordított .NET szerelvényekként vagy PowerShellben írt szkriptalapú modulokként hozhatók létre. Ez a témakör a PowerShell-modulok használatát ismerteti. További információ a PowerShell-modulok írásáról: PowerShell-modul írása.
Megjegyzés:
A PowerShell 3.0 előtt a parancsmagok és a szolgáltatók PowerShell-beépülő modulokba lettek csomagolva. A PowerShell 3.0-tól kezdve a Microsoft.PowerShell.Core beépülő modul alapértelmezés szerint minden munkamenethez hozzáadódik. Ez az egyetlen kiegészítő, amely megmaradt a PowerShellben. Az összes többi beépülő modul modullá lett konvertálva. Az új beépülő modulok létrehozása már nem támogatott.
Közzétett modul telepítése
A közzétett modul egy regisztrált adattárból, például a PowerShell-galéria elérhető modul. A PowerShellGet és Microsoft.PowerShell.PSResourceGet modulok parancsmagokat biztosítanak a PowerShell-modulok regisztrált adattárban való kereséséhez, telepítéséhez és közzétételéhez.
A PowerShellGet modul a PowerShell 5.0-s és újabb verzióiban érhető el. A Microsoft.PowerShell.PSResourceGet modult a PowerShell 7.4-es és újabb kiadásai tartalmazzák. A Microsoft.PowerShell.PSResourceGet a PowerShell új előnyben részesített csomagkezelője, és a PowerShell korábbi verzióira telepíthető. A Install-Module vagy Install-PSResource parancsmaggal telepíthet modulokat a PowerShell-gyűjteményből.
Get-Command Install-Module, Install-PSResource
CommandType Name Version Source
----------- ---- ------- ------
Function Install-Module 2.9.0 PowerShellGet
Cmdlet Install-PSResource 1.0.0 Microsoft.PowerShell.PSResourceGet
További információkért, lásd a PowerShellGet áttekintése.
Modul manuális telepítése
Ha fájlokat tartalmazó mappaként kap meg egy modult, telepítenie kell a számítógépre, mielőtt a PowerShellben használhatná.
A PowerShell számos előre telepített modult tartalmaz. A Windows-alapú számítógépeken számos Windows-szolgáltatás tartalmaz modulokat a szolgáltatás kezeléséhez. Ezek a modulok a funkció telepítésekor települnek. Más modulok is megjelenhetnek a modult telepítő telepítő- vagy telepítőprogramban.
Alapértelmezés szerint az aktuális felhasználó Modules mappája nem létezik. Ha CurrentUser vagy Install-Modulehasználatával telepített egy modult a Install-PSResource hatókörbe, ezek a parancsmagok létrehozzák az aktuális felhasználó Modules mappáit. Ha a mappa nem létezik, manuálisan is létrehozhatja.
Az alábbi paranccsal hozzon létre egy Modules mappát az aktuális felhasználó számára:
$folder = New-Item -Type Directory -Path $HOME\Documents\PowerShell\Modules
Másolja a teljes modulmappát az újonnan létrehozott mappába. A PowerShellben használja a Copy-Item parancsmagot. Futtassa például a következő parancsot a mappa MyModuleC:\PSTest másolásához az imént létrehozott mappába:
Copy-Item -Path C:\PSTest\MyModule -Destination $folder
A modulokat bármilyen helyre telepítheti, de a modulok alapértelmezett modulhelyre történő telepítése megkönnyíti a felügyeletüket. Az alapértelmezett modulhelyekkel kapcsolatos további információkért lásd: about_PSModulePath.
Modul automatikus betöltése
Amikor először futtat egy parancsot egy telepített modulból, a PowerShell automatikusan importálja (betölti) a modult. A modult a $env:PSModulePath környezeti változóban megadott helyeken kell tárolni. A más helyeken lévő modulokat a Import-Module parancsmag használatával kell importálni.
A modul automatikus betöltése lehetővé teszi a parancsok használatát egy modulban beállítás vagy profilkonfiguráció nélkül. A modulokat nem kell kezelnie, miután telepítette őket a számítógépére.
Az alábbi példák mindegyike a CimCmdletsGet-CimInstancemodul importálását okozza a munkamenetbe.
A parancs futtatása
Get-CimInstance Win32_OperatingSystemA parancs lekérése
Get-Command Get-CimInstanceSegítség kérése a parancshoz
Get-Help Get-CimInstance
A Get-Command parancsmag az összes telepített modulban felsorolja a parancsokat, még akkor is, ha még nincsenek a munkamenetben. Ha Get-Command helyettesítő karakterrel (*) használja, a PowerShell nem importál modulokat. Helyettesítő karaktereket használhat a parancsfelderítéshez anélkül, hogy olyan modulokat töltene be, amelyekre esetleg nincs szüksége a munkamenetben.
Emellett a PowerShell-szolgáltatókat használó parancsok nem importálnak automatikusan modult. Ha például olyan parancsot használ, amely megköveteli a WSMan: meghajtót, például a Get-PSSessionConfiguration parancsmagot, előfordulhat, hogy a Import-Module parancsmagot kell futtatnia a Microsoft.WSMan.Management modul importálásához, amely tartalmazza a WSMan: meghajtót.
Modul manuális importálása
A modul manuális importálására akkor van szükség, ha a modul nincs telepítve a $env:PSModulePath környezeti változó által megadott helyeken, vagy ha a modul különálló .dll vagy .psm1 fájlként van megadva, nem pedig csomagolt modulként.
Azt is módosíthatja, hogy a modul hogyan legyen importálva a munkamenetben. A modulból importált parancsmagok főnévi részéhez egy megkülönböztető előtagot ad hozzá a Import-Module paramétere. A NoClobber paraméter megakadályozza, hogy a modul olyan parancsokat adjon hozzá, amelyek elrejtik vagy lecserélik a munkamenetben meglévő parancsokat. További információ: Névütközések kezelése.
A modul nevének megadásával importálhat egy telepített $env:PSModulePath modult. A következő parancs például importálja a BitsTransfer modult az aktuális munkamenetbe.
Import-Module BitsTransfer
Ha olyan modult szeretne importálni, amely nincs a $env:PSModulePath-ban, használja a modulmappa teljes elérési útját. Ha például a TestCmdlets modult szeretné hozzáadni a C:\ps-test könyvtárban a munkamenethez, írja be a következőt:
Import-Module C:\ps-test\TestCmdlets
Egy modulmappában nem található modulfájl importálásához használja a parancs modulfájljának teljes elérési útját. Ha például a TestCmdlets.dll modult a C:\ps-test könyvtárban szeretné hozzáadni a munkamenethez, írja be a következőt:
Import-Module C:\ps-test\TestCmdlets.dll
További információ a modulok munkamenethez való hozzáadásáról: Import-Module.
Modul importálása minden munkamenet elején
A Import-Module parancs modulokat importál az aktuális PowerShell-munkamenetbe. Ha minden megkezdett PowerShell-munkamenetbe importálni szeretne egy modult, adja hozzá a Import-Module parancsot a PowerShell-profiljához.
További információ a profilokról: about_Profiles.
Telepített modulok keresése
A Get-Module parancsmag lekéri a munkamenetbe importált PowerShell-modulokat.
Get-Module
A felsorolt modulok tartalmazhatnak olyan modulokat, amelyeket bármely helyről importáltak, nem csak $env:PSModulePath.
Az alábbi paranccsal listázhatja a $env:PSModulePathtelepített modulokat:
Get-Module -ListAvailable
Ez a parancs lekéri a $env:PSModulePathtelepített összes modult, nem csak az aktuális munkamenetbe importált modulokat. Ez a parancs nem sorolja fel a más helyeken telepített modulokat.
További információ: Get-Module.
A modul parancsainak listázása
A Get-Command parancsmaggal megtalálhatja az összes elérhető parancsot. A Get-Command parancsmag paramétereivel olyan parancsokat szűrhet, mint a modul, a név és a főnév.
A modul összes parancsának megkereséséhez írja be a következőt:
Get-Command -Module <module-name>
Ha például meg szeretné keresni a parancsokat a BitsTransfer modulban, írja be a következőt:
Get-Command -Module BitsTransfer
A Get-Command parancsmaggal kapcsolatos további információkért lásd: Get-Command.
Modul eltávolítása
Egy modul eltávolításakor a modul által hozzáadott parancsok törlődnek a munkamenetből. Az alábbi parancs például eltávolítja a BitsTransfer modult az aktuális munkamenetből.
Remove-Module BitsTransfer
A modul eltávolítása megfordítja a modul importálásának műveletét. A modul eltávolítása nem távolítja el a modult. További információért lásd a Remove-Modulerészt.
A modulokból és beépülő modulokból parancsokat adhat hozzá a munkamenethez. A modulok minden típusú parancsot hozzáadhatnak, beleértve a parancsmagokat, a szolgáltatókat és a függvényeket, valamint az elemeket, például változókat, aliasokat és PowerShell-meghajtókat. A beépülő modulok csak parancsmagokat és szolgáltatókat adhatnak hozzá.
Mielőtt eltávolítaná a modult a munkamenetből, az alábbi parancsokkal állapítsa meg, hogy melyik modult szeretné eltávolítani.
Például a következő paranccsal keresse meg a Get-Date és Get-Help parancsmagok forrását:
Get-Command Get-Date, Get-Help -All |
Select-Object -Property Name, CommandType, Module ,PSSnapIn
Az alábbi kimenet azt mutatja, hogy a Get-Help parancsmag a Microsoft.PowerShell.Core beépülő modul része. Ez a beépülő modul nem távolítható el a munkamenetből.
Name CommandType Module PSSnapIn
---- ----------- ------ --------
Get-Date Function
Get-Date Cmdlet Microsoft.PowerShell.Utility
Get-Help Cmdlet Microsoft.PowerShell.Core
A Get-Date-hoz két forrás van. Az egyik függvény, a másik pedig a Microsoft.PowerShell.Utility modul parancsmagja. A modult a Remove-Modulehasználatával távolíthatja el. A függvény eltávolításához törölheti azt a Function: meghajtóról.
Remove-Item Function:Get-Date
A Function: meghajtóval kapcsolatos további információkért lásd: about_Function_Provider.
Névütközések kezelése
A névütközések akkor fordulnak elő, ha a munkamenet több parancsa is ugyanazzal a névvel rendelkezik. A modul importálása névütközést okoz, ha a modul parancsainak neve megegyezik a munkamenet parancsaival vagy elemeivel.
Import-Module olyan parancsokat adhat hozzá, amelyek elrejtik és lecserélik a parancsokat az aktuális munkamenetben. A névütközések a parancsok elrejtését vagy cseréjét eredményezhetik. A parancsok cseréje akkor történik, ha az importált modul egy, a munkamenetben meglévő paranccsal megegyező nevű parancsot tartalmaz. Az újonnan importált parancs lecserélése elsőbbséget élvez a meglévő paranccsal szemben.
Ha például egy munkamenet tartalmaz egy függvényt és egy azonos nevű parancsmagot, a PowerShell alapértelmezés szerint futtatja a függvényt. Ha a munkamenet azonos nevű, azonos típusú parancsokat tartalmaz, például két azonos nevű parancsmagot, alapértelmezés szerint a legutóbb hozzáadott parancsot futtatja.
További információkért, beleértve az elsőbbségi szabályok magyarázatát és a rejtett parancsok futtatására vonatkozó utasításokat, tekintse meg a about_Command_Precedence.
A rejtett vagy lecserélt parancsokat a parancs nevének minősítésével futtathatja. A parancs nevének minősítéséhez adja hozzá annak a modulnak a nevét, amely tartalmazza a parancs kívánt verzióját. Például:
Microsoft.PowerShell.Utility\Get-Date
A
A névütközések észleléséhez használja a parancsmag Get-Command paraméterét. Alapértelmezés szerint Get-Command csak azokat a parancsokat kapja meg, amelyek a parancsnév beírásakor futnak. A All paraméter lekéri a munkamenetben a meghatározott nevű összes parancsot.
A névütközések megelőzéséhez használja a NoClobber vagy Előtag paraméterét a Import-Module parancsmagban. A előtag paraméter előtagot ad hozzá az importált parancsok nevéhez, hogy azok egyediek legyenek a munkamenetben. A NoClobber paraméter nem importál olyan parancsokat, amelyek elrejtik vagy lecserélnék a munkamenetben meglévő parancsokat.
A Alias, Cmdlet, Függvényés Változó paramétereit a Import-Module-ban is használhatja, hogy kiválassza az importálni kívánt parancsokat, és kizárja azokat a parancsokat, amelyek névütközéseket okoznak a munkamenetében.
A modulkészítők a moduljegyzék DefaultCommandPrefix tulajdonságával megakadályozhatják a névütközéseket, ha alapértelmezett előtagot adnak hozzá az összes parancsnévhez. A előtag paraméter értéke elsőbbséget élvez a DefaultCommandPrefixértékével szemben.