PowerShell 101: Modules importeren

Heb je ooit een PowerShell-commando uitgevoerd en de gevreesde foutmelding “De term wordt niet herkend als de naam van een cmdlet” ontvangen? Hier is de clou: het probleem kan zo simpel zijn als een ontbrekende of niet-geïmporteerde module. Zelfs in moderne PowerShell-versies is het begrijpen van hoe modules werken essentieel om deze problemen te diagnosticeren en op te lossen.

Goed nieuws? Deze handleiding behandelt alles, van het controleren welke modules PowerShell momenteel heeft geïmporteerd tot het beheersen van hoe je ze importeert, verwijdert en opnieuw importeert. Tegen het einde zul je vaardigheden opdoen in het naadloos beheren van PowerShell-modules, of je nu onverwachte fouten oplost of werkt aan aangepaste modules.

Duik erin en laat PowerShell-modules je workflow helpen optimaliseren met vertrouwen!

Controleren van Geïmporteerde Modules

PowerShell-commando’s kunnen mislukken met cryptische foutmeldingen wanneer modules niet goed zijn geladen. Zo zal bijvoorbeeld proberen Get-ADUser uit te voeren zonder eerst de ActiveDirectory-module te importeren resulteren in een “opdracht niet gevonden” fout. Op soortgelijke wijze vereist het gebruik van Azure-opdrachten dat de Az-module aanwezig is in je sessie.

PowerShell moet de relevante module importeren om ervoor te zorgen dat commando’s werken zoals verwacht en om zijn commando’s beschikbaar te maken.

Om de momenteel geïmporteerde modules te bekijken, gebruik:

Get-Module

Wanneer je Get-Module uitvoert, zie je output vergelijkbaar met dit:

ModuleType Version    Name                                ExportedCommands
---------- -------    ----                                ----------------
Manifest   7.0.0.0    Microsoft.PowerShell.Management    {Add-Computer, Add-Content, Checkpoint-Computer...}
Manifest   7.0.0.0    Microsoft.PowerShell.Utility       {Add-Member, Add-Type, Clear-Variable...}
Script     2.0.0      PSReadline                         {Get-PSReadLineKeyHandler, Get-PSReadLineOption...}
Binary     1.0.0.1    SmbShare                          {Get-SmbShare, Set-SmbShare, Remove-SmbShare...}

Dit toont een lijst van alle momenteel geladen modules in je PowerShell-sessie, waarbij hun type (Manifest, Script of Binary), versienummer, modulenaam en een samenvatting van de commando’s die ze bieden worden weergegeven. De kolom ExportedCommands toont welke cmdlets beschikbaar zijn vanuit elke module.

Volgende, onderzoek commando’s van een module die je kunt importeren:

Get-Module -Name SmbShare -ListAvailable | Select exportedcommands

Wanneer je dit commando uitvoert, zie je een lijst met alle beschikbare commando’s in de SmbShare-module. Bijvoorbeeld:

ExportedCommands
----------------
{Get-SmbShare, New-SmbShare, Remove-SmbShare, Set-SmbShare, Get-SmbShareAccess, 
Grant-SmbShareAccess, Block-SmbShareAccess, Revoke-SmbShareAccess, Get-SmbMapping}

Deze uitvoer toont alle cmdlets die je kunt gebruiken vanuit de SmbShare-module. Elk commando dient een specifiek doel voor het beheren van SMB-shares:

  • Get-SmbShare: Lijst alle SMB-shares op het systeem op
  • New-SmbShare: Maakt een nieuwe SMB-share aan
  • Remove-SmbShare: Verwijdert een bestaande SMB-share
  • Set-SmbShare: Wijzigt eigenschappen van een bestaande share

Het begrijpen van welke commando’s beschikbaar zijn, helpt je bij het kiezen van de juiste tool voor je taak. Je kunt vergelijkbare commando’s gebruiken om de mogelijkheden van andere modules te verkennen.

Modules automatisch importeren

Om te zien hoe PowerShell modules dynamisch verwerkt, hier is een voorbeeld dat het dynamisch laden van een module laat zien:

PS> Get-Module

ModuleType Version    Name                                ExportedCommands
---------- -------    ----                                ----------------
Manifest   7.0.0.0    Microsoft.PowerShell.Management    {Add-Computer, Add-Content...}
Manifest   7.0.0.0    Microsoft.PowerShell.Utility       {Add-Member, Add-Type...}
Script     2.0.0      PSReadline                         {Get-PSReadLineKeyHandler...}

PS> Get-SmbShare

PS> Get-Module

ModuleType Version    Name                                ExportedCommands
---------- -------    ----                                ----------------
Manifest   7.0.0.0    Microsoft.PowerShell.Management    {Add-Computer, Add-Content...}
Manifest   7.0.0.0    Microsoft.PowerShell.Utility       {Add-Member, Add-Type...}
Script     2.0.0      PSReadline                         {Get-PSReadLineKeyHandler...}
Binary     1.0.0.1    SmbShare                          {Get-SmbShare, Set-SmbShare...}

Zoals hierboven getoond, wanneer je Get-SmbShare uitvoert, importeert PowerShell automatisch de SmbShare-module. Je ziet dat deze module in de lijst verschijnt na het uitvoeren van het commando.

Modules verwijderen en opnieuw importeren

Je moet mogelijk een module uit het geheugen wissen, bijvoorbeeld bij het testen van nieuwe configuraties of het oplossen van conflicten. Als dat het geval is, geen zorgen; PowerShell stelt je in staat een module te verwijderen uit het geheugen zonder deze te deïnstalleren, zodat je de sessie kunt resetten of vernieuwen indien nodig.

Om een module uit het geheugen te verwijderen:

Remove-Module -Name SmbShare

De cmdlet Remove-Module verwijdert de module uit het geheugen, maar verwijdert deze niet van uw systeem. Hoewel het verwijderen van modules zeldzaam is in dagelijks gebruik, is het nuttig voor specifieke scenario’s.

Om de module handmatig opnieuw te importeren:

Import-Module -Name SmbShare

Handmatig importeren kan handig zijn bij het oplossen van problemen of werken in aangepaste omgevingen.

Opnieuw importeren van modules na wijzigingen

Wanneer u werkt aan een module in ontwikkeling, kunt u situaties tegenkomen waarin wijzigingen die u aanbrengt niet onmiddellijk van kracht worden. Oude gegevens of configuraties kunnen nog steeds geladen zijn in de module, wat dit gedrag veroorzaakt.

Door de module opnieuw te importeren, zorgt u ervoor dat PowerShell de nieuwste versie gebruikt. Als u een module aanpast die u aan het ontwikkelen bent, moet u deze opnieuw importeren.

U kunt zowel Remove-Module en Import-Module gebruiken of het proces vereenvoudigen met de Force-parameter:

Import-Module -Name SmbShare -Force

De Force-parameter laadt de module uit en opnieuw in één stap, waardoor het ideaal is voor ontwikkelings- en testworkflows.

Conclusie

In deze handleiding heeft u geleerd hoe u PowerShell-modules beheert—het controleren van imports en importeren, verwijderen en opnieuw importeren van modules. U heeft ook verkend hoe PowerShell dynamisch modules importeert en hoe u het laden kunt beheren om handmatig problemen op te lossen of aangepaste configuraties te testen.

Pas deze vaardigheden nu toe door te experimenteren met aangepaste modules in uw scripts. Verken moduleontwikkeling en gebruik de Force-parameter om ervoor te zorgen dat wijzigingen van kracht worden.

Verbeter uw probleemoplossing, scriptontwikkeling en algehele PowerShell werkstroom met PowerShell-modules!

Source:
https://adamtheautomator.com/powershell-modules-guide-2/