Een PowerShell-module importeren

Nadat u een module op een systeem hebt geïnstalleerd, wilt u waarschijnlijk de module importeren. Importeren is het proces dat de module in het actieve geheugen laadt, zodat een gebruiker toegang heeft tot die module in de PowerShell-sessie. In PowerShell 2.0 kunt u een nieuw geïnstalleerde PowerShell-module importeren met een aanroep van de cmdlet Import-Module. In PowerShell 3.0 kan PowerShell een module impliciet importeren wanneer een van de functies of cmdlets in de module wordt aangeroepen door een gebruiker. Houd er rekening mee dat in beide versies wordt aangenomen dat u de module installeert op een locatie waar PowerShell deze kan vinden; Zie Installing a PowerShell Module (Een PowerShell-module installeren) voor meer informatie. U kunt een modulemanifest gebruiken om te beperken welke onderdelen van uw module worden geëxporteerd en u kunt parameters van de aanroep gebruiken om te beperken welke Import-Module onderdelen worden geïmporteerd.

Een Snap-In importeren (PowerShell 1.0)

Modules bestonden niet in PowerShell 1.0: in plaats daarvan moest u modules registreren en gebruiken. Het wordt echter niet aanbevolen om deze technologie op dit moment te gebruiken, omdat modules over het algemeen eenvoudiger te installeren en te importeren zijn. Zie How to Create a Windows PowerShell Snap-in (Een Windows PowerShell maken) voor meer informatie.

Een module importeren met Import-Module (PowerShell 2.0)

PowerShell 2.0 maakt gebruik van de juiste cmdlet Import-Module om modules te importeren. Wanneer deze cmdlet wordt uitgevoerd, Windows PowerShell naar de opgegeven module in de directories die zijn opgegeven in de PSModulePath variabele . Wanneer de opgegeven map wordt gevonden, zoekt Windows PowerShell naar bestanden in de volgende volgorde: modulemanifestbestanden (.psd1), scriptmodulebestanden (.psm1), binaire modulebestanden (.dll). Zie voor meer informatie over het toevoegen van directories aan de zoekopdracht about_PSModulePath. In de volgende code wordt beschreven hoe u een module importeert:

Import-Module myModule

Ervan uitgaande dat myModule zich in de PSModulePath bevindt, laadt PowerShell myModule in het actieve geheugen. Als myModule zich niet op een pad bevindt, kunt u PowerShell nog steeds expliciet vertellen waar PSModulePath het moet worden gevonden:

Import-Module -Name C:\myRandomDirectory\myModule -Verbose

U kunt ook de parameter gebruiken om te bepalen wat er uit de module wordt geëxporteerd -Verbose en wat er wordt geïmporteerd in het actieve geheugen. Zowel exports als imports beperken wat er aan de gebruiker wordt blootgesteld: het verschil is wie de zichtbaarheid controleert. In wezen worden exports beheerd door code in de module. Importen daarentegen worden beheerd door de Import-Module aanroep. Zie voor meer informatie beperken leden die worden geïmporteerd, hieronder.

Impliciet een module importeren (PowerShell 3.0)

Vanaf Windows PowerShell 3.0 worden modules automatisch geïmporteerd wanneer een cmdlet of functie in de module wordt gebruikt in een opdracht. Deze functie werkt voor elke module in een map die is opgenomen in de waarde van de omgevingsvariabele PSModulePath. Als u de module echter niet op een geldig pad opgeslagen, kunt u deze nog steeds laden met behulp van de expliciete optie Import-Module, zoals hierboven beschreven.

De volgende acties activeren het automatisch importeren van een module, ook wel 'module automatisch laden' genoemd.

  • Met behulp van een cmdlet in een opdracht. Als u bijvoorbeeld Get-ExecutionPolicy typt, wordt de module Microsoft.PowerShell.Security geïmporteerd die de Get-ExecutionPolicy cmdlet bevat.

  • Gebruik de cmdlet Get-Command om de opdracht op te halen. Als u bijvoorbeeld Get-Command Get-JobTrigger typt, wordt de module PSScheduledJob geïmporteerd die de Get-JobTrigger cmdlet bevat. Een Get-Command opdracht die jokertekens bevat, wordt beschouwd als detectie en activeert het importeren van een module niet.

  • Gebruik de cmdlet Get-Help om hulp te krijgen voor een cmdlet. Als u bijvoorbeeld Get-Help Get-WinEvent typt, wordt de module Microsoft.PowerShell.Diagnostics geïmporteerd die de Get-WinEvent cmdlet bevat.

Ter ondersteuning van het automatisch importeren van modules, haalt de cmdlet alle cmdlets en functies in alle geïnstalleerde modules op, zelfs als de module niet in de sessie Get-Command is geïmporteerd. Zie het Help-onderwerp voor de cmdlet Get-Command voor meer informatie.

Het importproces

Wanneer een module wordt geïmporteerd, wordt er een nieuwe sessietoestand gemaakt voor de module en wordt er een System.Management.Automation.PSModuleInfo-object in het geheugen gemaakt. Er wordt een sessietoestand gemaakt voor elke module die wordt geïmporteerd (dit omvat de hoofdmodule en eventuele geneste modules). De leden die vanuit de hoofdmodule worden geëxporteerd, met inbegrip van alle leden die door geneste modules naar de hoofdmodule zijn geëxporteerd, worden vervolgens geïmporteerd in de sessietoestand van de aanroeper.

De metagegevens van leden die uit een module worden geëxporteerd, hebben de eigenschap ModuleName. Deze eigenschap wordt gevuld met de naam van de module die ze heeft geëxporteerd.

Waarschuwing

Als de naam van een geëxporteerd lid een niet-goedgekeurd werkwoord gebruikt of als de naam van het lid beperkte tekens gebruikt, wordt er een waarschuwing weergegeven wanneer de cmdlet Import-Module wordt uitgevoerd.

Standaard retourneert de cmdlet Import-Module geen objecten naar de pijplijn. De cmdlet ondersteunt echter een PassThru-parameter die kan worden gebruikt om een System.Management.Automation.PSModuleInfo-object te retourneren voor elke module die wordt geïmporteerd. Gebruikers moeten de cmdlet Write-Host uitvoeren om uitvoer naar de host te verzenden.

De geïmporteerde leden beperken

Wanneer een module wordt geïmporteerd met behulp van de cmdlet Import-Module, worden standaard alle geëxporteerde moduleleden geïmporteerd in de sessie, inclusief alle opdrachten die door een geneste module naar de module zijn geëxporteerd. Standaard worden variabelen en aliassen niet geëxporteerd. Gebruik een modulemanifest om de leden te beperken die worden geëxporteerd. Gebruik de volgende parameters van de cmdlet om de geïmporteerde leden Import-Module te beperken.

  • Functie: deze parameter beperkt de functies die worden geëxporteerd. (Als u een modulemanifest gebruikt, zie dan de sleutel FunctionsToExport.)

  • `Cmdlet: deze parameter beperkt de cmdlets die worden geëxporteerd (als u een modulemanifest gebruikt, zie de sleutel CmdletsToExport.)

  • Variabele: deze parameter beperkt de variabelen die worden geëxporteerd (Als u een modulemanifest gebruikt, zie de sleutel VariablesToExport.)

  • Alias: met deze parameter worden de geëxporteerde aliassen beperkt (als u een modulemanifest gebruikt, zie dan de sleutel AliasesToExport.)

Zie ook

Een Windows PowerShell-module schrijven