Hoe PowerShell-modules te importeren als een baas

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.

Import-Module PSDiagnostics

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.

Enable-PSTrace -TraceLevel 1 -TraceFilePath C:\MyTrace.log

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.

Import-Module Dism, PowerShellGet, PSReadline

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.

Import-Module SmbShare -Verbose

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).

Displaying module import details

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.

Import-Module SmbShare -Force -Prefix New

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.

Get-Command -Module SmbShare | Select-Object Name

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.

Verifying the SmbShare module has been reimported

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 downloadenDownload 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.

Downloading the raw NuGet package (nupkg) file

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

Unblock-File -Path C:\PSModules\az.automation.1.9.1.nupkg

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
Deleting unnecessary contents from the extracted NuGet package folder

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.

$env:PSModulePath

Houd de paden in de gaten, want u hebt ze nodig in de volgende stap.

Finding out where your modules’ paths are located

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.

Import-Module -Name az.automation -Verbose
Installing and importing a module from a NuGet package

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

Get-Module -Name az.automation
Verifying the module has been imported successfully

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.

Import-Module -Name C:\az.automation -Verbose
Specifying the exact file location when importing a 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/