Powershell Modules 101
Unul din avantajele Powershell este ca poate fi extins, iar daca vom intelege cum anume poate fi extins si unde anume se afla toate cmdlet-urile suplimentare ne vom descurca mult mai usor si vom intelege cum sa portam comenzile de pe un sistem pe altul.
Cel mai simplu exemplu este cel din Windows Server unde ca sa putem folosi cmdlet-ul Add-WindowsFeature trebuie sa importam modulul ServerManager. Ca sa vedem daca modulul este disponibil pe server putem rula comanda Get-Module –ListAvailable:
Il importam folosind Import-Module ServerManager si putem chiar verifica daca cmdlet-ul dorit se afla in acest modul:
O sa revin putin acum la Get-Module –ListAvailable si o sa precizez ca de fapt comanda cauta modulele disponibile in folderele specificate in variabila PSModulePath:
Aceste module pot fi fisiere DLL sau chiar alte fisiere scrise in Powershell (atentie la execution policy atunci cand modulele vin sub forma de scripturi).
Daca de exemplu dorim sa vedem de unde se incarca un anumit modul o putem face folosind comanda din imaginea de mai jos:
Dar mai exista si alt tip de module numite Snapin-uri si care din pacate sunt gestionate folosind alte comenzi:
Get-PSSnapin
Add-PSSnapin
Remove-PSSnapin
Snapin-urile sunt module ce se instaleaza de regula cu o aplicatie si trebuie inregistrate pe sistem, nu doar copiate intr-un folder. Putem vedea snapin-urile instalate folosind comanda Get-PSSnapin –registered:
Daca nu folosim parametrul registered sunt afisate doar cele default ce vin cu shell-ul. Mai sus am pus cel mai la indemana exemplu si anume PowerCLI de la Vmware.
Sincer mi-as fi dorit sa existe doar un tip de module si un singur set de comenzi pentru gestionarea acestora, dar pana la urma ceea ce vedem mai sus e tipic Microsoft.
Happy scripting!