about_Modules

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 a feldolgozás szerkezetét és logikáját, valamint a munkát végző parancsokat biztosítják. A PowerShell parancsai szkriptek, függvények vagy parancsmagokként vannak implementálva.

A modul egy önálló, újrafelhasználható egység, amely egyetlen egységként importálható parancsmagokat, szolgáltatókat, függvényeket, változókat és egyéb típusú erőforrásokat tartalmazhat.

A PowerShell alapmodul-készlettel rendelkezik. Igény szerint további modulokat is telepíthet. Alapértelmezés szerint a telepített modulok automatikusan töltődnek be, amikor először használ egy parancsot egy modulból. A változóval $PSModuleAutoloadingPreference engedélyezheti, letilthatja és konfigurálhatja a modulok automatikus betöltését. További információ: about_Preference_Variables.

A munkamenetek során eltávolíthatja vagy újra betöltheti azokat. Remove-Module A parancsmaggal eltávolíthat egy modult a munkamenetből. Import-Module A parancsmaggal betölthet egy modult.

A modulok lefordított .NET-szerelvényekként hozhatók létre C#-ban, vagy szkriptalapú modulokként, amelyek a PowerShellben íródtak. Ez a témakör a PowerShell-modulok használatát ismerteti. A PowerShell-modulok írásáról további információt a PowerShell-modul írása című témakörben talál.

Feljegyzé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 beépülő modul 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 elérhető modul, például a PowerShell-galéria. A PowerShellGet és a Microsoft.PowerShell.PSResourceGet modulok parancsmagokat biztosítanak a PowerShell-modulok egy 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 kiadásaiban is megtalálható. A Microsoft.PowerShell.PSResourceGet modul a PowerShell 7.4-es és újabb verzióiban érhető el. A Microsoft.PowerShell.PSResourceGet a PowerShell új előnyben részesített csomagkezelője, amely a PowerShell korábbi verzióira telepíthető. A PowerShell-galéria modulok telepítéséhez használja a Install-ModuleInstall-PSResource parancsmagot.

 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ó: PowerShellGet – áttekintés.

Modul manuális telepítése

Ha egy modult olyan mappaként kap, amelyben fájlok találhatók, telepítenie kell azt a számítógépre, mielőtt a PowerShellben használhassa.

A PowerShell számos előre telepített modullal rendelkezik. Windows-alapú számítógépeken számos Windows-funkció tartalmaz modulokat a szolgáltatás kezeléséhez. Ezek a modulok a szolgáltatás telepítésekor települnek. Előfordulhat, hogy a modult telepítő telepítő vagy telepítőprogramban más modulok is megjelennek.

Alapértelmezés szerint az Modules aktuális felhasználó mappája nem létezik. Ha a hatókörben Install-Module telepített egy modult, CurrentUser vagy Install-PSResourcea parancsmagok létrehozzák az Modules aktuális felhasználó 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 új létrehozott mappába. A PowerShellben használja a Copy-Item parancsmagot. Futtassa például a következő parancsot a MyModule mappa C:\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 környezeti változóban megadott helyeken $env:PSModulePath kell tárolni. A más helyeken lévő modulokat a Import-Module parancsmaggal 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. Miután telepítette őket a számítógépre, nem kell kezelnie a modulokat.

Az alábbi példák mindegyike azt eredményezi, hogy a CimCmdlets modul, amely tartalmazza Get-CimInstance, importálva lesz a munkamenetbe.

  • A parancs futtatása

    Get-CimInstance Win32_OperatingSystem
    
  • A parancs lekérése

    Get-Command Get-CimInstance
    
  • Segítség kérése a parancshoz

    Get-Help Get-CimInstance
    

A parancsmaggal Get-Command az összes telepített modul parancsai listázhatók, még akkor is, ha még nem szerepelnek a munkamenetben. Helyettesítő karakter* () használata Get-Command esetén a PowerShell nem importál modulokat. A parancsfelderítéshez helyettesítő karaktereket használhat anélkül, hogy betöltenie kellene azokat a modulokat, amelyekre nem feltétlenül van 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 meghajtót tartalmazó WSMan: Microsoft.WSMan.Management modul importálásához.

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ó vagy .psm1 fájlként .dll van megadva a csomagolt modul helyett.

Azt is módosíthatja, hogy a modul hogyan legyen importálva a munkamenetben. Az előtag paraméter Import-Module például egy megkülönböztető előtagot ad hozzá a modulból importált parancsmagok főnévrészéhez. 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álhatja a $env:PSModulePath modulba telepített modult. Az alábbi parancs például importálja a BitsTransfer modult az aktuális munkamenetbe.

Import-Module BitsTransfer

Ha olyan modult szeretne importálni, amely nem szerepel az Ön $env:PSModulePathmappájában, használja a modulmappához vezető teljes elérési utat. Ha például hozzá szeretné adni a TestCmdlets modult a címtárban a C:\ps-test 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 hozzá szeretné adni a TestCmdlets.dll modult a címtárban a C:\ps-test 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 parancsot a Import-Module 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 onnan $env:PSModulePath.

A következő paranccsal listázhatja a következő helyen $env:PSModulePathtelepített modulokat:

Get-Module -ListAvailable

Ez a parancs lekéri az összes telepített modult $env:PSModulePath, 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

Get-Command A parancsmaggal megtalálhatja az összes elérhető parancsot. A parancsmag paramétereivel Get-Command 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>

A BitsTransfer modul parancsainak megkereséséhez például írja be a következőt:

Get-Command -Module BitsTransfer

A parancsmaggal kapcsolatos további információkért lásd: Get-Command 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ó: Remove-Module.

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 forrást és Get-Help a Get-Date parancsmagokat:

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ő modulban található. 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

Két forrás létezik a következőhöz Get-Date: . Az egyik függvény, a másik pedig a Microsoft.PowerShell.Utility modul parancsmagja . A modult a következővel Remove-Moduletá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

További információ a Function: meghajtóról: 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ó, beleértve a rejtett parancsok futtatására vonatkozó elsőbbségi szabályok és utasítások magyarázatát, lásd: about_Command_Precedence.

Futtathat rejtett vagy lecserélt parancsokat a parancsnév minősítésével. A parancs nevének minősítéséhez adja hozzá a modul nevét, és ne tartalmazza a parancs kívánt verzióját. Példa:

Microsoft.PowerShell.Utility\Get-Date

A modulnév-előtaggal való futtatás Get-Date biztosítja, hogy a Microsoft.PowerShell.Utility modulból futtassa a verziót .

A névütközések észleléséhez használja a parancsmag Minden paraméterét Get-Command . Alapértelmezés szerint csak azokat a parancsokat kapja meg, Get-Command amelyek a parancsnév beírásakor futnak. A Minden paraméter a munkamenet adott nevével rendelkező összes parancsot lekéri.

A névütközések megelőzéséhez használja a parancsmag NoClobber vagy Prefix paraméterét Import-Module . Az előtag paraméter hozzáad egy előtagot 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.

Az Alias, a Parancsmag, a Függvény és a Változó paraméter használatával Import-Module is csak az importálni kívánt parancsokat választhatja ki, és kizárhatja azokat a parancsokat, amelyek névütközéseket okoznak a munkamenetben.

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. Az előtag paraméter értéke elsőbbséget élvez a DefaultCommandPrefix értékével szemben.

Lásd még