Delen via


Een PowerShell-module importeren

Nadat u een module op een systeem hebt geïnstalleerd, wilt u de module waarschijnlijk importeren. Importeren is het proces waarmee de module in het actieve geheugen wordt geladen, zodat een gebruiker toegang heeft tot die module in de PowerShell-sessie. In PowerShell 2.0 kunt u een zojuist geïnstalleerde PowerShell-module importeren met een aanroep naar importmodule-cmdlet. In PowerShell 3.0 kan PowerShell impliciet een module importeren wanneer een van de functies of cmdlets in de module wordt aangeroepen door een gebruiker. Houd er rekening mee dat beide versies ervan uitgaan dat u uw module installeert op een locatie waar PowerShell deze kan vinden; Zie Een PowerShell-module installerenvoor meer informatie. U kunt een modulemanifest gebruiken om te beperken welke onderdelen van uw module worden geëxporteerd en u kunt parameters van de Import-Module aanroep gebruiken om te beperken welke 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 gemakkelijker te installeren en te importeren zijn. Zie Een Windows PowerShell-module makenvoor meer informatie.

Een module importeren met Import-Module (PowerShell 2.0)

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

Import-Module myModule

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

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

U kunt ook de parameter -Verbose gebruiken om te bepalen wat er uit de module wordt geëxporteerd en wat wordt geïmporteerd in het actieve geheugen. Zowel exports als import beperken wat beschikbaar is voor de gebruiker: het verschil is wie de zichtbaarheid beheert. In wezen worden exports beheerd door code in de module. De invoer wordt daarentegen bepaald door de Import-Module aanroep. Zie Leden beperken die zijn geïmporteerdhieronder voor meer informatie.

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 op elke module in een map die is opgenomen in de waarde van de PSModulePath omgevingsvariabele. Als u de module echter niet opslaat op een geldig pad, kunt u deze nog steeds laden met behulp van de expliciete optie Import-Module, zoals hierboven beschreven.

Met de volgende acties wordt automatisch importeren van een module geactiveerd, ook wel 'module automatisch laden' genoemd.

  • Een cmdlet gebruiken in een opdracht. Als u bijvoorbeeld Get-ExecutionPolicy typt, wordt de Microsoft.PowerShell.Security-module 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 PSScheduledJob-module geïmporteerd die de Get-JobTrigger-cmdlet bevat. Een Get-Command-opdracht met jokertekens 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 Microsoft.PowerShell.Diagnostics-module geïmporteerd die de Get-WinEvent-cmdlet bevat.

Ter ondersteuning van het automatisch importeren van modules haalt de Get-Command cmdlet alle cmdlets en functies op in alle geïnstalleerde modules, zelfs als de module niet in de sessie wordt 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 sessiestatus voor de module gemaakt en wordt er een System.Management.Automation.PSModuleInfo object in het geheugen gemaakt. Er wordt een sessiestatus gemaakt voor elke module die wordt geïmporteerd (dit omvat de hoofdmodule en geneste modules). De leden die worden geëxporteerd uit de hoofdmodule, inclusief leden die door geneste modules naar de hoofdmodule zijn geëxporteerd, worden vervolgens geïmporteerd in de sessiestatus 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 gebruikmaakt van een niet-goedgekeurd werkwoord of als de naam van het lid beperkte tekens gebruikt, wordt er een waarschuwing weergegeven wanneer de Import-Module cmdlet wordt uitgevoerd.

De cmdlet Import-Module retourneert standaard 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. Als u uitvoer naar de host wilt verzenden, moeten gebruikers de cmdlet Write-Host uitvoeren.

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 opdrachten die door een geneste module naar de module worden geëxporteerd. Variabelen en aliassen worden standaard niet geëxporteerd. Als u de geëxporteerde leden wilt beperken, gebruikt u een modulemanifest. Als u de geïmporteerde leden wilt beperken, gebruikt u de volgende parameters van de cmdlet Import-Module.

  • Functie-: met deze parameter worden de functies beperkt die worden geëxporteerd. (Als u een modulemanifest gebruikt, raadpleegt u de functionsToExport-sleutel.)

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

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

  • Alias: met deze parameter worden de aliassen beperkt die worden geëxporteerd (Als u een modulemanifest gebruikt, raadpleegt u de sleutel AliasesToExport.)

Zie ook

een Windows PowerShell-module schrijven