Ce face Import-Module
Un modul este un pachet de cmdlet-uri, funcții, variabile și alte resurse. Import-Module adaugă membrii unui modul în sesiunea curentă. Din Windows PowerShell 3.0 nu mai e nevoie de el pentru modulele instalate în folderele din $env:PSModulePath: PowerShell încarcă automat modulul când rulezi o comandă din el, când ceri Get-Command sau Get-Help pentru ea. Get-Command cu wildcard nu încarcă module. Comportamentul se poate schimba cu variabila $PSModuleAutoLoadingPreference.
Ai nevoie de Import-Module când modulul nu este în $env:PSModulePath (îi dai calea către folder, .psm1 sau .dll), când vrei să controlezi importul (-Prefix pentru alte nume, -NoClobber ca să nu ascunzi comenzi existente, -Function pentru doar câteva funcții) sau când reîncarci un modul pe care l-ai modificat (-Force). Importul este valabil doar în sesiunea curentă; ca să ai modulul în fiecare sesiune, pune comanda în $PROFILE. Remove-Module descarcă modulul din sesiune, dar nu îl dezinstalează.
Get-Module listează modulele deja încărcate, iar Get-Module -ListAvailable pe cele instalate în $env:PSModulePath. În PowerShell 7 pe Windows, folderele implicite sunt $HOME\Documents\PowerShell\Modules (utilizatorul curent), $env:ProgramFiles\PowerShell\Modules (toți utilizatorii) și $PSHOME\Modules; pe Linux și macOS, ~/.local/share/powershell/Modules și /usr/local/share/powershell/Modules. Pentru modulele care merg doar în Windows PowerShell 5.1, din PowerShell 7.0 există Import-Module -UseWindowsPowerShell (doar pe Windows).
Parametri
| Parametru | Descriere |
|---|---|
-Name |
Numele modulului sau calea către folderul ori fișierul lui (.psd1, .psm1, .dll). |
-Force |
Reîncarcă modulul chiar dacă este deja importat. |
-PassThru |
Întoarce obiectul modulului importat (implicit comanda nu afișează nimic). |
-Prefix |
Adaugă un prefix la substantivul comenzilor importate: cu -Prefix Ro, Get-Factura devine Get-RoFactura. |
-NoClobber |
Nu importă comenzile care ar ascunde sau înlocui comenzi existente în sesiune. |
-Function / -Cmdlet / -Alias / -Variable |
Importă doar membrii indicați. |
-MinimumVersion / -RequiredVersion |
Importă doar o versiune mai mare sau egală, respectiv exact versiunea dată; altfel dă eroare. |
-DisableNameChecking |
Ascunde avertismentul despre comenzile cu verbe neaprobate. |
-UseWindowsPowerShell |
Încarcă modulul printr-o sesiune Windows PowerShell 5.1 (compatibilitate). Din PowerShell 7.0, doar pe Windows. |
Get-Module -ListAvailable |
Listează modulele instalate în $env:PSModulePath, nu doar pe cele încărcate. |
Ce returnează
Nimic, implicit; cu -PassThru, un obiect PSModuleInfo. Get-Module întoarce obiecte PSModuleInfo.
Exemple
Exemplul 1: Autoîncărcarea unui modul
Primul Get-Module nu afișează nimic, pentru că modulul nu e încărcat. După prima folosire a lui Compress-Archive, modulul apare în sesiune.
Get-Module -Name Microsoft.PowerShell.Archive
Compress-Archive -Path C:\Proiecte\facturi -DestinationPath C:\Arhive\facturi.zip
Get-Module -Name Microsoft.PowerShell.Archive | Select-Object -Property Name, Version
Ieșire în terminal
Name Version
---- -------
Microsoft.PowerShell.Archive 1.2.5
Exemplul 2: Importul unui modul propriu dintr-un fișier .psm1
Modulul Facturi.psm1 nu e în $env:PSModulePath, deci îl importăm după cale și listăm funcțiile lui.
Import-Module C:\Proiecte\facturi\Facturi.psm1
(Get-Command -Module Facturi).Name
Ieșire în terminal
Get-Factura
New-Factura
Exemplul 3: Reîncărcarea modulului după o modificare
Fără -Force, PowerShell păstrează versiunea deja încărcată și nu vezi modificările din fișier.
Import-Module C:\Proiecte\facturi\Facturi.psm1 -Force -PassThru | Select-Object -Property Name, Path
Ieșire în terminal
Name Path
---- ----
Facturi C:\Proiecte\facturi\Facturi.psm1
Greșeli frecvente
- Modifici fișierul
.psm1și rulezi din nouImport-Modulefără-Force: rămâne încărcată versiunea veche. - Pui
Import-Moduleîn fiecare script pentru module instalate deja în$env:PSModulePath: autoîncărcarea face asta; importul explicit e util doar ca să fixezi versiunea sau să controlezi importul. - Cauți un modul instalat cu
Get-Modulefără-ListAvailableși nu îl găsești: fără acest parametru vezi doar modulele încărcate. - Crezi că
Remove-Moduleșterge modulul de pe disc: îl scoate doar din sesiunea curentă; pentru dezinstalare foloseștiUninstall-ModulesauUninstall-PSResource.
Comenzi înrudite
Install-Module: Descarcă și instalează module din PowerShell Gallery; în PowerShell 7.4+ ai și Install-PSResource, din modulul PSResourceGet.Get-Command: Găsește comenzile disponibile (cmdlet-uri, funcții, aliasuri, programe); Get-Alias arată ce comandă se ascunde în spatele unui alias.$PROFILE: Variabila $PROFILE conține calea scriptului care rulează la fiecare pornire a PowerShell, unde îți pui aliasurile și funcțiile.Funcții și param(): O funcție grupează cod sub un nume; param() îi declară parametrii, cu tip și valoare implicită, iar [CmdletBinding()] o face să meargă ca un cmdlet.