Import-Module în PowerShell

Module, pachete și remoting Windows PowerShell 2.0

Încarcă un modul în sesiunea curentă; din PowerShell 3.0 modulele instalate se încarcă și singure la prima folosire a unei comenzi.

Sintaxă
Import-Module [-Name] <String[]> [-MinimumVersion <Version>] [-RequiredVersion <Version>] [-Prefix <String>] [-Force] [-PassThru]
Get-Module [[-Name] <String[]>] [-ListAvailable]

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 nou Import-Module fă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-Module fă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ști Uninstall-Module sau Uninstall-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.