Megosztás a következőn keresztül:


modulokról

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 modul egy olyan csomag, amely PowerShell-tagokat, például parancsmagokat, szolgáltatókat, függvényeket, munkafolyamatokat, változókat és aliasokat tartalmaz.

A parancsokat író személyek modulok segítségével rendszerezhetik parancsaikat, és megoszthatják azokat másokkal. A modulokat fogadó személyek hozzáadhatják a modulok parancsait a PowerShell-munkameneteikhez, és ugyanúgy használhatják őket, mint a beépített parancsokat.

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.

Mi az a modul?

A modul egy olyan csomag, amely PowerShell-tagokat, például parancsmagokat, szolgáltatókat, függvényeket, munkafolyamatokat, változókat és aliasokat tartalmaz. A csomag tagjai implementálhatók PowerShell-szkriptben, lefordított DLL-ben vagy a kettő kombinációjában. Ezek a fájlok általában egyetlen könyvtárba vannak csoportosítva. További információ: A Windows PowerShell-modulok ismertetése az SDK dokumentációjában.

Modul automatikus betöltése

A PowerShell 3.0-tól kezdődően a PowerShell automatikusan importálja a modulokat, amikor először futtat parancsot egy telepített modulban. Mostantól a parancsokat beállítás vagy profilkonfiguráció nélkül is használhatja egy modulban, így nincs szükség a modulok kezelésére, miután telepítette őket a számítógépre.

A modulban lévő parancsok is könnyebben megtalálhatók. A Get-Command parancsmag most már az összes telepített modul összes parancsát lekéri, még akkor is, ha még nincsenek a munkamenetben. Megkereshet egy parancsot, és használhatja anélkül, hogy importálnia kellene a modult.

Az alábbi példák mindegyike a CimCmdlets Get-CimInstancemodul importálását okozza 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
    

Get-Command A helyettesítő karaktert (*) tartalmazó parancsok felderítésre szolgálnak, nem használhatók, és nem importálnak modulokat.

Csak a PSModulePath környezeti változó által megadott helyen tárolt modulok importálása történik automatikusan. A más helyeken lévő modulokat a parancsmag futtatásával Import-Module kell importálni.

Emellett a PowerShell-szolgáltatókat használó parancsok nem importálnak automatikusan modulokat. Ha például olyan parancsot használ, amelyhez a WSMan: meghajtó szükséges, például a Get-PSSessionConfiguration parancsmagot, előfordulhat, hogy futtatnia kell a Import-Module parancsmagot a meghajtót tartalmazó WSMan: modul importálásához.

Továbbra is futtathatja a Import-Module parancsot egy modul importálásához, és a $PSModuleAutoloadingPreference változó segítségével engedélyezheti, letilthatja és konfigurálhatja a modulok automatikus importálását. További információ a about_Preference_Variablescímű részben található.

A modul használata

Egy modul használatához hajtsa végre a következő feladatokat:

  1. Telepítse a modult. (Ezt gyakran megteszik helyetted.)
  2. Keresse meg a modul által hozzáadott parancsokat.
  3. Használja a modul által hozzáadott parancsokat.

Ez a témakör ismerteti a feladatok végrehajtását. Egyéb hasznos információkat is tartalmaz a modulok kezeléséről.

Modul 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 legtöbb modul telepítve van az Ön számára. A PowerShell számos előre telepített modult tartalmaz, amelyeket más néven alapmoduloknak is neveznek. Windows-alapú számítógépeken, ha az operációs rendszer szolgáltatásai parancsmagokkal rendelkeznek a kezelésükhöz, ezek a modulok előre telepítve vannak. Ha telepít egy Windows-szolgáltatást, például a Kiszolgálókezelő Szerepkörök és szolgáltatások hozzáadása varázslójával vagy a Vezérlőpult Windows-szolgáltatások be- és kikapcsolása párbeszédpaneljével, a szolgáltatás részét képező PowerShell-modulok telepítve lesznek. Sok más modul egy telepítőben vagy telepítőprogramban található, amely telepíti a modult.

A következő paranccsal hozzon létre egy Modules könyvtárat az aktuális felhasználó számára:

New-Item -Type Directory -Path $HOME\Documents\PowerShell\Modules

Másolja a teljes modulmappát a Modules könyvtárba. Bármilyen módszerrel másolhatja a mappát, beleértve a Windows Intézőt és a Cmd.exe, valamint a PowerShellt. A PowerShellben használja a Copy-Item parancsmagot. Ha például a MyModule mappát C:\ps-test\MyModule a Modules könyvtárba szeretné másolni, írja be a következőt:

Copy-Item -Path C:\ps-test\MyModule -Destination `
    $HOME\Documents\PowerShell\Modules

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. A modulok alapértelmezett helyeiről további információt a Modul és a DSC erőforrás helye, valamint a PSModulePath című szakaszban talál.

Hogyan lehet megtalálni a telepített modulokat

Az alapértelmezett modulhelyre telepített, de a munkamenetbe még nem importált modulok megkereséséhez írja be a következőt:

Get-Module -ListAvailable

A munkamenetbe már importált modulok megkereséséhez írja be a PowerShell-parancssorba a következőt:

Get-Module

További információ a Get-Module parancsmagról: Get-Module.

Hogyan lehet megtalálni a parancsokat egy modulban

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.

Hogyan kaphat segítséget a modul parancsaihoz

Ha a modul súgófájlokat tartalmaz az exportált parancsokhoz, a Get-Help parancsmag megjeleníti a súgótémaköröket. Használja ugyanazt a Get-Help parancsformátumot, amelyet a PowerShell bármely parancsához használna.

A PowerShell 3.0-tól kezdődően letöltheti a modulok súgófájljait, és letöltheti a súgófájlok frissítéseit, hogy azok soha ne elavuljanak.

Ha segítségért szeretne segítséget kapni egy modul parancsaihoz, írja be a következőt:

Get-Help <command-name>

Ha online segítséget szeretne kapni egy modul parancsához, írja be a következőt:

Get-Help <command-name> -Online

A modulban lévő parancsok súgófájljainak letöltéséhez és telepítéséhez írja be a következőt:

Update-Help -Module <module-name>

További információ: Get-Help és Update-Help.

Modul importálása

Előfordulhat, hogy importálnia kell egy modult vagy egy modulfájlt. Importálásra akkor van szükség, ha egy modul nincs telepítve a PSModulePath környezeti változó által megadott helyekre, $env:PSModulePathvagy ha a modul fájlból, például .dll vagy .psm1 fájlból áll, nem pedig egy tipikus modulból, amelyet mappaként kézbesítenek.

Dönthet úgy is, hogy importál egy modult, hogy használni tudja a Import-Module parancs paramétereit, például az Előtag paramétert, amely megkülönböztető előtagot ad az összes importált parancs főnévnevéhez, vagy a NoClobber paramétert, amely megakadályozza, hogy a modul olyan parancsokat adjon hozzá, amelyek elrejtik vagy lecserélik a munkamenetben meglévő parancsokat.

Modulok importálásához használja a Import-Module parancsmagot.

Ha egy PSModulePath helyen lévő modulokat szeretne importálni az aktuális munkamenetbe, használja a következő parancsformátumot.

Import-Module <module-name>

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 nem az alapértelmezett modulhelyen található, használja a parancs modulmappájának teljes elérési útját.

Ha például hozzá szeretné adni a TestCmdlets modult a címtárhoz C:\ps-test a munkamenethez, írja be a következőt:

Import-Module C:\ps-test\TestCmdlets

Ha olyan modulfájlt szeretne importálni, amely nem található modulmappában, használja a modulfájl teljes elérési útját a parancsban.

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 munkamenetbe

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.

Modul eltávolítása

Egy modul eltávolításakor a modul által hozzáadott parancsok törlődnek a munkamenetből.

Ha el szeretne távolítani egy modult a munkamenetből, használja a következő parancsformátumot.

Remove-Module <module-name>

A következő 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.

Modul- és DSC-erőforrás-helyek, valamint PSModulePath

A $env:PSModulePath környezeti változó a modulok és erőforrások keresésére keresendő mappahelyek listáját tartalmazza.

Alapértelmezés szerint a $env:PSModulePath hozzárendelt tényleges helyek a következők:

  • Rendszerszintű helyszínek: $PSHOME\Modules

    Ezek a mappák a Windows és a PowerShell modulokat tartalmazzák.

    A PowerShellben található DSC-erőforrások a mappában $PSHOME\Modules\PSDesiredStateConfiguration\DSCResources vannak tárolva.

  • Felhasználóspecifikus modulok: Ezek a felhasználó által a felhasználó hatókörében telepített modulok. Install-Module rendelkezik egy Hatókör paraméterrel, amely lehetővé teszi annak megadását, hogy a modul telepítve van-e az aktuális felhasználóra vagy az összes felhasználóra. További információ: Install-Module.

    A Windows rendszeren a felhasználóspecifikus CurrentUser helye a PowerShell\Modules felhasználói profil Dokumentumok helyén található mappa. A hely konkrét elérési útja a Windows verziójától és attól függően változik, hogy használ-e mappaátirányítást. A Microsoft OneDrive a Dokumentumok mappa helyét is módosíthatja.

    Alapértelmezés szerint Windows 10 és újabb rendszereken ez a hely .$HOME\Documents\PowerShell\Modules Linux vagy Mac rendszeren a CurrentUser helye .$HOME/.local/share/powershell/Modules

    Megjegyzés:

    A Dokumentumok mappa helyét a következő paranccsal ellenőrizheti: [Environment]::GetFolderPath('MyDocuments').

  • Az AllUsers helye a Windows rendszeren található $env:PROGRAMFILES\PowerShell\Modules . Linux vagy Mac rendszeren a modulok a ./usr/local/share/powershell/Modules

Megjegyzés:

Ha fájlokat szeretne hozzáadni vagy módosítani a $env:Windir\System32 könyvtárban, indítsa el a PowerShellt a Futtatás rendszergazdaként beállítással.

A modulok alapértelmezett helyét a rendszeren a PSModulePath környezeti változó értékének módosításával módosíthatja. $Env:PSModulePath A PSModulePath környezeti változó modellezése a Path környezeti változón alapul, és azonos formátumú.

A modulok alapértelmezett helyeinek megtekintéséhez írja be a következőt:

$Env:PSModulePath

Alapértelmezett modulhely hozzáadásához használja a következő parancsformátumot.

$Env:PSModulePath = $Env:PSModulePath + ";<path>"

A parancsban lévő pontosvessző (;) elválasztja az új elérési utat a listában azt megelőző elérési úttól.

A könyvtár hozzáadásához C:\ps-test\Modules például írja be a következőt:

$Env:PSModulePath + ";C:\ps-test\Modules"

Alapértelmezett modulhely hozzáadásához Linux vagy MacOS rendszeren használja a következő parancsformátumot:

$Env:PSModulePath += ":<path>"

Ha például hozzá szeretné adni a könyvtárat /usr/local/Fabrikam/Modules a PSModulePath környezeti változó értékéhez, írja be a következőt:

$Env:PSModulePath += ":/usr/local/Fabrikam/Modules"

Linux vagy MacOS rendszeren a parancsban található kettőspont (:) elválasztja az új elérési utat a listában megelőző elérési úttól.

Amikor hozzáad egy elérési utat a PSModulePath fájlhoz, Get-Module és Import-Module a parancsok modulokat tartalmaznak az elérési úton.

A beállított érték csak az aktuális munkamenetre van hatással. Ha a módosítás tartóssá szeretné tenni, adja hozzá a parancsot a PowerShell-profilhoz, vagy a Vezérlőpult Rendszer használatával módosítsa a PSModulePath környezeti változó értékét a beállításjegyzékben.

Emellett a módosítás tartóssá tételéhez a System.Environment osztály SetEnvironmentVariable metódusával is hozzáadhat egy elérési utat a PSModulePath környezeti változóhoz.

További információ a PSModulePath változóról: about_Environment_Variables.

Modulok és névütközések

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.

A névütközések a parancsok elrejtését vagy cseréjét eredményezhetik.

Rejtett

A parancs akkor rejtett, ha nem a parancs neve beírásakor fut, de más módszerrel is futtathatja, például a parancs nevének minősítésével annak a modulnak vagy beépülő modulnak a nevével, amelyből származik.

Helyébe

A parancs lecserélődik, ha nem tudja futtatni, mert felülírta egy azonos nevű parancs. Még ha el is távolítja az ütközést okozó modult, csak akkor futtathat helyettesített parancsot, ha újraindítja a munkamenetet.

Import-Module olyan parancsokat adhat hozzá, amelyek elrejtik és lecserélik a parancsokat az aktuális munkamenetben. A munkamenetben lévő parancsok elrejthetik a modul által hozzáadott parancsokat is.

A névütközések észleléséhez használja a parancsmag Get-Command paraméterét. A PowerShell 3.0-tól Get-Command kezdődően csak azokat a parancsokat kapja meg, amelyek a parancs nevének 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. Az Előtag paraméter előtagot ad az importált parancsok nevéhez, hogy azok egyediek legyenek a munkamenetben. A NoClobber paraméter nem importál olyan parancsokat, amelyek elrejtenék 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.

Még ha egy parancs rejtett is, futtathatja úgy, hogy a parancs nevét annak a modulnak vagy beépülő modulnak a nevével minősíti, amelyből származik.

A PowerShell-parancsok elsőbbségi szabályai határozzák meg, hogy melyik parancs fusson, ha a munkamenet azonos nevű parancsokat tartalmaz.

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.

Modulok és beépülő modulok (kiterjesztések)

Modulokból és beépülő modulokból adhat hozzá parancsokat a munkamenethez. A modulok minden típusú parancsot hozzáadhatnak, beleértve a parancsmagokat, szolgáltatókat és függvényeket, valamint 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ítana egy modult vagy beépülő modult a munkamenetből, az alábbi parancsokkal határozza meg, hogy mely parancsok legyenek eltávolítva.

A munkamenetben lévő parancsmag forrásának megkereséséhez használja a következő parancsformátumot:

Get-Command <cmdlet-name> | Format-List -Property verb,noun,pssnapin,module

A Get-Date parancsmag forrásának megkereséséhez például írja be a következőt:

Get-Command Get-Date | Format-List -Property verb,noun,module

A modul által exportált parancsoknak követniük kell a PowerShell-parancsok elnevezési szabályait. Ha az importált modul olyan parancsmagokat vagy függvényeket exportál, amelyek nevében nem jóváhagyott műveletek szerepelnek, a Import-Module parancsmag a következő figyelmeztető üzenetet jeleníti meg.

FIGYELMEZTETÉS: Egyes importált parancsnevek nem jóváhagyott parancsokat tartalmaznak, amelyek kevésbé felderíthetők. A jóváhagyott igék listájának megtekintéséhez használja a Részletes paramétert, vagy írja be a Get-Verb.

Ez az üzenet csak figyelmeztetés. A teljes modul továbbra is importálva van, beleértve a nem megfelelő parancsokat is. Bár az üzenet megjelenik a modul felhasználói számára, az elnevezési problémát a modul szerzőjének kell kijavítani.

A figyelmeztető üzenet letiltásához használja a parancsmag Import-Module paraméterét.

Beépített modulok és beépülő modulok

A PowerShell 2.0-ban és a PowerShell 3.0-s és újabb verzióinak régebbi stílusú gazdaprogramjaiban a PowerShell által telepített alapvető parancsok beépülő modulokba vannak csomagolva, amelyek automatikusan hozzáadódnak minden PowerShell-munkamenethez.

A PowerShell 3.0-tól kezdődően a kezdeti munkamenet-állapot API-t megvalósító InitialSessionState.CreateDefault2 gazdaprogramok esetében a Microsoft.PowerShell.Core beépülő modul alapértelmezés szerint minden munkamenethez hozzá lesz adva. A modulok az első használatkor automatikusan betöltődnek.

Megjegyzés:

A távoli munkamenetek, beleértve a New-PSSession parancsmaggal indított munkameneteket is, régebbi stílusú munkamenetek, amelyekben a beépített parancsok beépülő modulokba vannak csomagolva.

A következő modulok (vagy beépülő modulok) a PowerShell használatával vannak telepítve.

  • Cim-parancsmagok
  • Microsoft.PowerShell.Archive
  • Microsoft.PowerShell.Core
  • Microsoft.PowerShell.Diagnostics
  • Microsoft.PowerShell.Host
  • Microsoft.PowerShell.Management
  • Microsoft.PowerShell.Security
  • Microsoft.PowerShell.Utility
  • Microsoft.WSMan.Management
  • Csomagkezelés
  • PowerShellGet
  • PSDesiredStateConfiguration
  • PSDiagnostics
  • PSReadline

Naplózási modul eseményei

A PowerShell 3.0-tól kezdődően a PowerShell-modulok és beépülő modulok parancsmagjainak és függvényeinek végrehajtási eseményeit rögzítheti, ha a modulok és beépülő modulok LogPipelineExecutionDetails tulajdonságát a következőre $Trueállítja: . A modulnaplózás bekapcsolása csoportházirend-beállítással is engedélyezheti a modulnaplózást az összes PowerShell-munkamenetben. További információt a naplózási és csoportházirend-cikkekben talál.

Lásd még