PowerShell is een fenomenale krachtige scripttaal. Maar om zijn potentieel te ontsluiten, moet je weten hoe je de juiste modules kunt importeren.
In deze tutorial leer je alles wat je moet weten om PowerShell-modules te importeren als een professional. Met een diepgaand begrip van cmdlets, parameters en modules, kun je snellere, efficiëntere en effectievere scripts maken dan ooit tevoren.
Lees verder om je PowerShell-vaardigheden een boost te geven en je scriptgame naar nieuwe hoogten te tillen!
Vereisten
Deze tutorial zal een hands-on demonstratie zijn. Zorg ervoor dat je een systeem hebt met PowerShell geïnstalleerd om mee te doen. Deze tutorial gebruikt Windows 10 en PowerShell 5.1 als voorbeeld, maar dezelfde commando’s zouden moeten werken met de meeste versies van Windows en PowerShell.
Een enkele module importeren
PowerShell-modules bevatten vooraf gebouwde code die je kunt gebruiken in je PowerShell-scripts, waardoor je tijd en moeite bespaart. Wanneer je PowerShell-modules importeert, maak je gebruik van vooraf gebouwde codes in plaats van helemaal opnieuw te beginnen.
Import-Module
cmdlet is de primaire manier om modules te importeren in PowerShell. Het importeren van een enkele module is een van de meest basale toepassingen van de Import-Module
cmdlet, wat het eerste is wat je leert in deze tutorial.
Open PowerShell als beheerder en voer de onderstaande Import-Module
-opdracht uit om te zoeken naar de PSDiagnostics
-module en laad deze in het geheugen. Als dit succesvol is, wordt de module geïmporteerd, maar de opdracht geeft geen output.
Het is sterk aanbevolen om modules van online repositories te importeren via de Install-Module cmdlet wanneer mogelijk. Deze cmdlet zorgt voor afhankelijkheden en versiebeheer voor je.
Zodra je de module hebt geïmporteerd, kun je een van de cmdlets of functies van de module gebruiken om je te helpen bij het diagnosticeren en oplossen van problemen. Het Enable-PSTrace
cmdlet is slechts een voorbeeld van de cmdlets die worden geleverd door de PSDiagnostics-module, waarmee diagnostische tracing in PowerShell mogelijk is.
Voer nu het volgende Enable-PSTrace
commando uit om diagnostische tracing uit te voeren en de resultaten op te slaan in het opgegeven -TraceFilePath
(C:\\MyTrace.log
). Dit commando geeft geen uitvoer naar de console, aangezien de resultaten in plaats daarvan naar een bestand worden geschreven.
Sommige modules vereisen mogelijk aanvullende configuratie of setup voordat je ze kunt gebruiken. Zorg ervoor dat je de documentatie leest die bij de module is geleverd om eventuele vereisten of voorwaarden te begrijpen.
Meerdere Modules Tegelijk Importeren
Het importeren van een enkele module werkt prima. Maar als je vaak meerdere modules tegelijk moet importeren, kan deze taak ook worden uitgevoerd met het Import-Module
cmdlet.
Het importeren van meerdere modules is een geweldige manier om tijd en moeite te besparen in PowerShell. Maar hoe precies? Je geeft de namen van de modules op, gescheiden door komma’s.
Voer de onderstaande opdracht uit om meerdere modules te zoeken (Dism, PowerShellGet, PSReadline
) en laad ze in het geheugen. Net als bij het importeren van een enkele module, geeft deze opdracht geen uitvoer.
Weergave van module-importdetails
Zoals eerder vermeld, geeft een succesvolle module-import geen uitvoer. Maar geef toe. Je zou sceptisch zijn of de module inderdaad is geïmporteerd of niet.
De -Verbose
-parameter is een handige optie die je kunt gebruiken met veel PowerShell-cmdlets en -functies, waaronder de Import-Module
-cmdlet. Met deze parameter vertelt PowerShell om gedetailleerde informatie over de opdracht weer te geven terwijl deze wordt uitgevoerd. Op zijn beurt krijg je waardevolle feedback die je kunt gebruiken voor probleemoplossing en debugging.
Voer de volgende opdracht uit om de module SmbShare
te importeren en voeg de parameter -Verbose
toe om de details van de module-import te tonen.
Zoals je hieronder kunt zien, geeft de -Verbose
parameter gedetailleerde informatie over het laden van het modulebestand en verschillende functies die uit de module worden geïmporteerd. Deze informatie kan helpen om inzicht te krijgen in de interne werking van de module.
In dit geval biedt de SmbShare
module cmdlets voor het beheren van SMB-shares op Windows-machines. Deze cmdlets omvatten, maar zijn niet beperkt tot, New-SmbShare
(het maken van nieuwe shares) en Remove-SmbShare
(bestaande shares verwijderen).

Herimporteren van een module in dezelfde sessie
Of je nu problemen hebt met je module of gewoon zeker wilt zijn dat je de meest up-to-date versie van je module gebruikt, opnieuw importeren van een PowerShell is bevorderlijk. Hoe? Door de parameter -Force
toe te voegen aan de Import-Module
-opdracht.
Deze -Force
-parameter stelt je in staat om de cmdlets en functies van de module te blijven gebruiken zonder je PowerShell-sessie te hoeven sluiten en opnieuw te openen.
Een veelvoorkomend gebruiksscenario voor het opnieuw importeren van een module is wanneer je aan het ontwikkelen bent en wijzigingen aanbrengt in een module. Je kunt de module opnieuw importeren in je huidige sessie om die wijzigingen te testen voordat je ze definitief maakt.
Voer de volgende opdracht uit om PowerShell met de -Force
-optie te gebruiken om de SmbShare
-module te verwijderen en opnieuw in te voeren vanaf de oorspronkelijke locatie.
De -Prefix
-parameter stelt je in staat om een voorvoegsel op te geven voor de cmdlets en functies die zijn geïmporteerd uit de module. In dit geval worden alle geïmporteerde cmdlets en functies voorafgegaan door New
. Deze parameter kan handig zijn om conflicten te voorkomen met bestaande cmdlets of functies in je sessie.
Bijvoorbeeld, de Get-SmbShare
-cmdlet in de oorspronkelijke module wordt Get-NewSmbShare
in de opnieuw geïmporteerde module.
Voer nu de Get-Command-opdracht hieronder uit om een lijst op te halen van alle cmdlets en functies die worden geleverd door de geselecteerde SmbShare-module (Select-Object) op naam.
Hieronder zie je dat de cmdlets van de SmbShare-module nu het voorvoegsel New aan hun namen hebben toegevoegd. Deze output bevestigt dat de module succesvol opnieuw is geïmporteerd.

Het gebruik van NuGet-packages om PowerShell-modules handmatig te importeren
Je hebt tot nu toe met succes modules geïmporteerd vanuit de PowerShell Gallery. Maar wat als de module die je zoekt daar niet beschikbaar is?
Je kunt PowerShell-modules handmatig installeren en importeren vanuit een NuGet-pakket. In de context van PowerShell is een NuGet-pakket een verzameling bestanden die een PowerShell-module bevatten, samen met eventuele afhankelijke modules of bibliotheken die nodig zijn voor het functioneren van de module.
Om een module vanuit een NuGet-pakket te importeren, moet je het NuGet-pakket handmatig downloaden, uitpakken en installeren met de volgende stappen:
1. Ga naar de Azure PowerShell Gallery-pagina van de Az.Automation-module.
2. Klik vervolgens op het tabblad Handmatig downloaden → Download het raw nupkg-bestand om het pakket te downloaden. Deze tutorial gebruikt de Az.Automation 1.9.1-module uit de Azure PowerShell Gallery als voorbeeld. Maar dezelfde stappen zijn van toepassing op andere NuGet-pakketten.

3. Voer nadat je het hebt gedownload, de volgende Unblock-File
-opdracht uit, die geen output geeft, maar het gedownloade .nupkg-bestand deblokkeert. Zorg ervoor dat je het bestandspad wijzigt naar het pad waar je het pakket hebt gedownload.
Het deblokkeren van het pakket is noodzakelijk. Waarom? PowerShell staat mogelijk niet toe dat bestanden die van internet zijn gedownload, worden uitgevoerd als beveiligingsmaatregel om de uitvoering van mogelijk schadelijke scripts te voorkomen
4. Nu, pak het gedownloade bestand .nupkg uit naar een map op uw lokale machine. U hebt mogelijk een compressie/decompressie-tool zoals 7-zip of WinRAR nodig om het pakket uit te pakken. Een NuGet-pakket is een ZIP-archief dat een verzameling bestanden bevat die een module vormen.
5. Verwijder de volgende inhoud uit de uitgepakte map.
De uitgepakte inhoud van een NuGet-pakket bevat enkele metagegevens en bestanden die niet nodig zijn voor handmatige installatie van de module.
Name | Type |
---|---|
_rels | Folder |
Package | Folder |
[Content_Types].xml | XML File |
Az.Automation.nuspec | XML Manifest File |

6. Hernoem uw uitgepakte map met een meer beschrijvende naam, zoals az.automation, om eventuele fouten te voorkomen. Onthoud om alle letters in kleine letters te houden en geen speciale tekens in de naam te gebruiken.
7. Voer vervolgens de opdracht $env:PSModulePath
uit om uw huidige shell-modulepaden te vinden. Deze opdracht retourneert een lijst met alle standaard modulepaden op uw systeem. PowerShell zoekt in deze paden om modules automatisch te laden wanneer de modulenaam wordt gespecificeerd in een script of opdracht.
Houd de paden in de gaten, want u hebt ze nodig in de volgende stap.

8. Kopieer de zojuist hernoemde map (az.automation) naar één van de mappen die je hebt genoteerd in stap zeven. Hiermee wordt de reikwijdte van de module gedefinieerd (specifiek of alle gebruikers).
Path | Function |
---|---|
C:\Users\admin\Documents\WindowsPowerShell\Modules | Makes the module available for the specific user account (admin). This tutorial uses this location as an example. |
C:\Program Files\WindowsPowerShell\Modules | Makes the module available for all user accounts on your local machine. |
9. Voer nu het onderstaande commando uit om de module (az.automation) te installeren en importeren in je PowerShell-sessie. Zorg ervoor dat je az.automation vervangt door de daadwerkelijke naam van je module.

10. Voer tot slot het volgende Get-Module commando uit om te controleren of de module (az.automation) succesvol is geïmporteerd.

Misschien wil je niet vertrouwen op automatische detectie. Zo ja, geef dan de exacte bestandslocatie (C:\az.automation) op bij het importeren van de module.

Conclusie
Met samengevoegde functies of gegroepeerde code zijn PowerShell-modules game changers. En in deze tutorial heb je voldoende manieren geleerd om PowerShell-modules in je sessies te importeren, inclusief het handmatig importeren van modules uit een NuGet-pakket. Je hebt ook verschillende parameters besproken die het importproces beheersen.
Door deze technieken onder de knie te krijgen, kun je gemakkelijk modules importeren en gebruiken om je automatiseringsscripts te verbeteren. Maar het leren hoeft daar niet te stoppen. Waarom zou je je PowerShell-modulebeheervaardigheden niet naar een hoger niveau tillen door te leren moduleleden te exporteren?
Source:
https://adamtheautomator.com/import-powershell-modules/