Notitie
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen u aan te melden of de directory te wijzigen.
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen de mappen te wijzigen.
Korte beschrijving
Hierin wordt uitgelegd hoe u PowerShell-modules installeert, importeert en gebruikt.
Lange beschrijving
Een module is een pakket dat PowerShell-opdrachten bevat, zoals cmdlets, providers, functies, werkstromen, variabelen en aliassen.
Mensen die opdrachten schrijven, kunnen modules gebruiken om hun opdrachten te ordenen en met anderen te delen. Personen die modules ontvangen, kunnen de opdrachten in de modules toevoegen aan hun PowerShell-sessies en deze op dezelfde manier gebruiken als de ingebouwde opdrachten.
In dit onderwerp wordt uitgelegd hoe u PowerShell-modules gebruikt. Zie Een PowerShell-module schrijven voor meer informatie over het schrijven van PowerShell-modules.
Wat is een module?
Een module is een pakket van commando's. Alle cmdlets en providers in uw sessie worden toegevoegd door een module of een module.
Module automatisch laden
Vanaf PowerShell 3.0 worden modules automatisch geïmporteerd wanneer u voor het eerst een opdracht uitvoert in een geïnstalleerde module. U kunt nu de opdrachten in een module gebruiken zonder enige instelling of profielconfiguratie, dus u hoeft geen modules te beheren nadat u ze op uw computer hebt geïnstalleerd.
De commando's in een module zijn ook makkelijker te vinden. De Get-Command cmdlet krijgt nu alle opdrachten in alle geïnstalleerde modules, zelfs als ze nog niet in de sessie zijn, zodat u een opdracht kunt vinden en deze kunt gebruiken zonder te importeren.
Elk van de volgende voorbeelden zorgt ervoor dat de module met Get-Mailbox de module wordt geïmporteerd in uw sessie.
Voer de opdracht uit
Get-Mailbox -Identity ChrisOpdracht verkrijgen
Get-Command Get-MailboxHulp bij de opdracht krijgen
Get-Help Get-Mailbox
Get-Command Opdrachten die een jokerteken (*) bevatten, worden beschouwd als bedoeld voor ontdekking, niet voor gebruik, en importeren geen modules.
Alleen modules die zijn opgeslagen op de locatie die is opgegeven door de PSModulePath-omgevingsvariabele, worden automatisch geïmporteerd. Modules op andere locaties moeten worden geïmporteerd door de Import-Module cmdlet uit te voeren.
Opdrachten die gebruikmaken van PowerShell-providers worden ook niet automatisch een module geïmporteerd. Als u bijvoorbeeld een opdracht gebruikt waarvoor het WSMan:-station is vereist, zoals de Get-PSSessionConfiguration cmdlet, moet u mogelijk de Import-Module cmdlet uitvoeren om de Microsoft.WSMan.Management-module te importeren die het WSMan: station bevat.
U kunt nog steeds de Import-Module opdracht uitvoeren om een module te importeren en de $PSModuleAutoloadingPreference variabele gebruiken om het automatisch importeren van modules in te schakelen, uit te schakelen en te configureren. Zie about_Preference_Variablesvoor meer informatie.
Hoe een module te gebruiken
Voer de volgende taken uit om een module te gebruiken:
- Installeer de module. (Dit wordt vaak voor u gedaan.)
- Zoek de opdrachten die de module heeft toegevoegd.
- Gebruik de commando's die de module heeft toegevoegd.
In dit onderwerp wordt uitgelegd hoe u deze taken uitvoert. Het bevat ook andere nuttige informatie over het beheren van modules.
Hoe een module te installeren
Als u een module ontvangt als een map met bestanden erin, moet u deze op uw computer installeren voordat u deze in PowerShell kunt gebruiken.
De meeste modules worden voor u geïnstalleerd. PowerShell wordt geleverd met verschillende vooraf geïnstalleerde modules, ook wel de "kernmodules" genoemd. Als op Windows-computers functies die bij het besturingssysteem zijn inbegrepen, cmdlets bevatten om deze te beheren, zijn deze modules vooraf geïnstalleerd. Wanneer u een Windows-onderdeel installeert, bijvoorbeeld met behulp van de wizard Rollen en onderdelen toevoegen in Serverbeheer of het dialoogvenster Windows-onderdelen in- of uitschakelen in het Configuratiescherm, worden alle PowerShell-modules die deel uitmaken van de functie geïnstalleerd. Veel andere modules worden geleverd in een installatieprogramma of installatieprogramma dat de module installeert.
Gebruik de volgende opdracht om een map Modules te maken voor de huidige gebruiker:
New-Item -Type Directory -Path $HOME\Documents\WindowsPowerShell\Modules
Kopieer de hele modulemap naar de map Modules. U kunt elke methode gebruiken om de map te kopiëren, inclusief Windows Verkenner en Cmd.exe, evenals PowerShell. Gebruik in PowerShell de cmdlet Copy-Item. Als u bijvoorbeeld de map MyModule wilt kopiëren van C:\ps-test\MyModule naar de map Modules, typt u:
Copy-Item -Path C:\ps-test\MyModule -Destination `
$HOME\Documents\WindowsPowerShell\Modules
U kunt een module op elke locatie installeren, maar als u uw modules installeert op een standaardmodulelocatie, kunt u deze eenvoudiger beheren. Zie de sectie Module- en DSC-bronlocaties en PSModulePath voor meer informatie over de standaardmodulelocaties.
Geïnstalleerde modules vinden
Als u modules wilt zoeken die op een standaardmodulelocatie zijn geïnstalleerd, maar nog niet in uw sessie zijn geïmporteerd, typt u:
Get-Module -ListAvailable
Als u de modules wilt vinden die al in uw sessie zijn geïmporteerd, typt u bij de PowerShell-prompt:
Get-Module
Zie Get-Module voor meer informatie over de cmdlet.
Hoe de opdrachten in een module te vinden
Gebruik de cmdlet Get-Command om alle beschikbare opdrachten te vinden. U kunt de parameters van de Get-Command-cmdlet gebruiken om opdrachten zoals module, naam en zelfstandig naamwoord te filteren.
Als u alle opdrachten in een module wilt zoeken, typt u:
Get-Command -Module <module-name>
Als u bijvoorbeeld de opdrachten in de BitsTransfer-module wilt vinden, typt u:
Get-Command -Module BitsTransfer
Zie Get-Commandvoor meer informatie over de cmdlet .
Hulp krijgen voor de opdrachten in een module
Als de module Help-bestanden bevat voor de opdrachten die worden geëxporteerd, worden de Help-onderwerpen in de Get-Help cmdlet weergegeven. Gebruik dezelfde Get-Help opdrachtindeling die u zou gebruiken om hulp te krijgen voor een opdracht in PowerShell.
Vanaf PowerShell 3.0 kunt u Help-bestanden downloaden voor een module en updates voor de Help-bestanden downloaden, zodat ze nooit verouderd zijn.
Als u hulp wilt krijgen voor een opdracht in een module, typt u:
Get-Help <command-name>
Als u online hulp wilt krijgen bij de opdracht in een module, typt u:
Get-Help <command-name> -Online
Als u de Help-bestanden voor de opdrachten in een module wilt downloaden en installeren, typt u:
Update-Help -Module <module-name>
Zie Get-Help en Update-Help voor meer informatie.
Een module importeren
Mogelijk moet u een module importeren of een modulebestand importeren. Importeren is vereist wanneer een module niet is geïnstalleerd op de locaties die zijn opgegeven door de PSModulePath-omgevingsvariabele , $env:PSModulePathof als de module bestaat uit een bestand, zoals een .dll- of .psm1-bestand, in plaats van een typische module die als een map wordt geleverd.
U kunt er ook voor kiezen om een module te importeren, zodat u de parameters van de Import-Module opdracht kunt gebruiken, zoals de parameter Prefix, die een onderscheidend voorvoegsel toevoegt aan de namen van zelfstandige naamwoorden van alle geïmporteerde opdrachten, of de parameter NoClobber , die voorkomt dat de module opdrachten toevoegt die bestaande opdrachten in de sessie verbergen of vervangen.
Gebruik de Import-Module cmdlet om modules te importeren.
Als u modules op een PSModulePath-locatie wilt importeren in de huidige sessie, gebruikt u de volgende opdrachtindeling.
Import-Module <module-name>
Met de volgende opdracht wordt bijvoorbeeld de BitsTransfer-module geïmporteerd in de huidige sessie.
Import-Module BitsTransfer
Als u een module wilt importeren die zich niet op een standaardmodulelocatie bevindt, gebruikt u het volledig gekwalificeerde pad naar de modulemap in de opdracht.
Als u bijvoorbeeld de module TestCmdlets in de C:\ps-test map aan uw sessie wilt toevoegen, typt u:
Import-Module C:\ps-test\TestCmdlets
Als u een modulebestand wilt importeren dat geen deel uitmaakt van een modulemap, gebruikt u het volledig gekwalificeerde pad naar het modulebestand in de opdracht.
Als u bijvoorbeeld de TestCmdlets.dll-module in de map C:\ps-test wilt toevoegen aan uw sessie, typt u:
Import-Module C:\ps-test\TestCmdlets.dll
Zie Import-Modulevoor meer informatie over het toevoegen van modules aan uw sessie.
Een module importeren in elke sessie
Met de opdracht Import-Module worden modules geïmporteerd in uw huidige PowerShell-sessie. Als u een module wilt importeren in elke PowerShell-sessie die u start, voegt u de Import-Module opdracht toe aan uw PowerShell-profiel.
Zie about_Profilesvoor meer informatie over profielen.
Hoe een module te verwijderen
Wanneer u een module verwijdert, worden de opdrachten die de module heeft toegevoegd uit de sessie verwijderd.
Als u een module uit uw sessie wilt verwijderen, gebruikt u de volgende opdrachtindeling.
Remove-Module <module-name>
Met de volgende opdracht wordt bijvoorbeeld de BitsTransfer-module uit de huidige sessie verwijderd.
Remove-Module BitsTransfer
Als u een module verwijdert, wordt de bewerking van het importeren van een module omgekeerd. Als u een module verwijdert, wordt de module niet verwijderd. Zie Remove-Modulevoor meer informatie.
Module- en DSC-resourcelocaties en PSModulePath
Hieronder volgen standaardlocaties voor PowerShell-modules. Vanaf PowerShell 4.0, met de introductie van DSC, werd een nieuwe standaardmodule en DSC-resourcemap geïntroduceerd. Voor meer informatie over DSC, zie about_DesiredStateConfiguration.
Systeem:
$PSHOME\Modulesof ($env:windir\System32\WindowsPowerShell\v1.0\Modules) Systeemmodules zijn modules die worden geleverd met Windows en PowerShell.Vanaf PowerShell 4.0, toen PowerShell Desired State Configuration (DSC) werd geïntroduceerd, worden DSC-resources die zijn opgenomen in PowerShell ook opgeslagen in
$PSHOME\Modules, in de$PSHOME\Modules\PSDesiredStateConfiguration\DSCResourcesmap.Huidige gebruiker:
$HOME\Documents\WindowsPowerShell\Modules($env:UserProfile\Documents\WindowsPowerShell\Modules)of
$HOME\My Documents\WindowsPowerShell\Modules($env:UserProfile\My Documents\WindowsPowerShell\Modules)Dit is de locatie voor door de gebruiker toegevoegde modules voorafgaand aan PowerShell 4.0.
In PowerShell 4.0 en latere versies van PowerShell worden door de gebruiker toegevoegde modules en DSC-resources opgeslagen in C:\Program Files\WindowsPowerShell\Modules. Modules en DSC-bronnen op deze locatie zijn toegankelijk voor alle gebruikers van de computer. Deze wijziging was nodig omdat de DSC-engine draait als een lokaal systeem en geen toegang heeft tot gebruikersspecifieke paden, zoals $home\Documents\WindowsPowerShell\Modules.
Vanaf PowerShell 5.0, met de toevoeging van de PowerShellGet-module en de PowerShell-galerie met community- en door Microsoft gemaakte resources, installeert de Install-Module opdracht modules en DSC-resources C:\Program Files\WindowsPowerShell\Modules standaard.
Opmerking: Als u bestanden in de $env:Windir\System32 map wilt toevoegen of wijzigen, start u PowerShell met de optie 'Als administrator uitvoeren'.
U kunt de standaardmodulelocaties op uw systeem wijzigen door de waarde van de PSModulePath-omgevingsvariabele , $Env:PSModulePath. De omgevingsvariabele PSModulePath is gemodelleerd naar de omgevingsvariabele Path en heeft dezelfde indeling.
Als u de standaardmodulelocaties wilt weergeven, typt u:
$Env:PSModulePath
Als u een standaardmodulelocatie wilt toevoegen, gebruikt u de volgende opdrachtindeling.
$Env:PSModulePath = $Env:PSModulePath + ";<path>"
De puntkomma (;) in de opdracht scheidt het nieuwe pad van het pad dat eraan voorafgaat in de lijst.
Als u bijvoorbeeld de C:\ps-test\Modules map wilt toevoegen, typt u:
$Env:PSModulePath + ";C:\ps-test\Modules"
Wanneer u een pad toevoegt aan PSModulePathGet-Module en Import-Module opdrachten modules in dat pad opnemen.
De waarde die u instelt, is alleen van invloed op de huidige sessie. Als u de wijziging permanent wilt maken, voegt u de opdracht toe aan uw PowerShell-profiel of gebruikt u Systeem in het Configuratiescherm om de waarde van de PSModulePath-omgevingsvariabele in het register te wijzigen.
Als u de wijziging permanent wilt maken, kunt u ook de methode SetEnvironmentVariable van de klasse System.Environment gebruiken om een pad toe te voegen aan de omgevingsvariabele PSModulePath .
Zie about_Environment_Variables voor meer informatie over de variabele PSModulePath.
Modules en naamconflicten
Naamconflicten treden op wanneer meer dan één opdracht in de sessie dezelfde naam heeft. Het importeren van een module veroorzaakt een naamconflict wanneer opdrachten in de module dezelfde namen hebben als opdrachten of items in de sessie.
Naamconflicten kunnen ertoe leiden dat opdrachten worden verborgen of vervangen.
Verborgen
Een opdracht is verborgen wanneer het niet de opdracht is die wordt uitgevoerd wanneer u de opdrachtnaam typt, maar u kunt deze uitvoeren met behulp van een andere methode, bijvoorbeeld door de opdrachtnaam te kwalificeren met de naam van de module of module waarin deze is ontstaan.
Vervangen
Een opdracht wordt vervangen wanneer u deze niet kunt uitvoeren omdat deze is overschreven door een opdracht met dezelfde naam. Zelfs wanneer u de module verwijdert die het conflict heeft veroorzaakt, kunt u een vervangen opdracht niet uitvoeren, tenzij u de sessie opnieuw start.
Import-Module kunnen opdrachten toevoegen waarmee opdrachten in de huidige sessie worden verborgen en vervangen. Opdrachten in uw sessie kunnen ook opdrachten verbergen die door de module zijn toegevoegd.
Als u naamconflicten wilt detecteren, gebruikt u de parameter Alle van de Get-Command-cmdlet. Vanaf PowerShell 3.0 Get-Command worden alleen die opdrachten opgehaald die worden uitgevoerd wanneer u de naam van de opdracht typt. De parameter All haalt opdrachten op die de specifieke naam in de sessie hebben.
Gebruik de NoClobber- of Prefix- parameters van de Import-Module cmdlet om naamconflicten te voorkomen. De parameter Prefix voegt een voorvoegsel toe aan de namen van geïmporteerde opdrachten, zodat ze uniek zijn in de sessie. De parameter NoClobber importeert geen opdrachten die bestaande opdrachten in de sessie verbergen of vervangen.
U kunt ook de Alias, Cmdlet, Functionen Variabele parameters van Import-Module gebruiken om alleen de opdrachten te selecteren die u wilt importeren en u kunt opdrachten uitsluiten die naamconflicten veroorzaken in uw sessie.
Auteurs van modules kunnen naamconflicten voorkomen met behulp van de eigenschap DefaultCommandPrefix eigenschap van het modulemanifest om een standaardvoorvoegsel toe te voegen aan alle opdrachtnamen. De waarde van de parameter voorvoegsel heeft voorrang op de waarde van DefaultCommandPrefix.
Zelfs als een opdracht is verborgen, kunt u deze uitvoeren door de naam van de opdracht te kwalificeren met de naam van de module of module waarin deze is ontstaan.
De voorrangsregels voor PowerShell-opdrachten bepalen welke opdracht wordt uitgevoerd wanneer de sessie opdrachten met dezelfde naam bevat.
Wanneer een sessie bijvoorbeeld een functie en een cmdlet met dezelfde naam bevat, wordt de functie standaard uitgevoerd in PowerShell. Wanneer de sessie opdrachten van hetzelfde type met dezelfde naam bevat, zoals twee cmdlets met dezelfde naam, wordt standaard de laatst toegevoegde opdracht uitgevoerd.
Zie about_Command_Precedencevoor meer informatie, waaronder een uitleg van de prioriteitsregels en instructies voor het uitvoeren van verborgen opdrachten.
Modules en snap-ins
U kunt opdrachten aan uw sessie toevoegen vanuit modules en snap-ins. Modules kunnen alle typen opdrachten toevoegen, waaronder cmdlets, providers en functies, en items, zoals variabelen, aliassen en PowerShell-stations. Snap-ins kunnen alleen cmdlets en providers toevoegen.
Voordat u een module of module uit uw sessie verwijdert, gebruikt u de volgende opdrachten om te bepalen welke opdrachten worden verwijderd.
Als u de bron van een cmdlet in uw sessie wilt vinden, gebruikt u de volgende opdrachtindeling:
Get-Command <cmdlet-name> | Format-List -Property verb,noun,pssnapin,module
Als u bijvoorbeeld de bron van de Get-Date-cmdlet wilt zoeken, typt u:
Get-Command Get-Date | Format-List -Property verb,noun,module
Zie about_PSSnapins voor meer informatie over PowerShell-snap-ins.
Module-gerelateerde waarschuwingen en fouten
De opdrachten die een module exporteert, moeten de naamgevingsregels van de PowerShell-opdracht volgen. Als de module die u importeert, cmdlets of functies exporteert die niet-goedgekeurde werkwoorden in hun naam hebben, Import-Module wordt het volgende waarschuwingsbericht weergegeven.
WAARSCHUWING: Sommige geïmporteerde opdrachtnamen bevatten niet-goedgekeurde werkwoorden, waardoor ze mogelijk minder detecteerbaar zijn. Gebruik de uitgebreide parameter voor meer details of typ Get-Verb om de lijst met goedgekeurde werkwoorden weer te geven.
Dit bericht is slechts een waarschuwing. De volledige module wordt nog steeds geïmporteerd, inclusief de niet-conforme opdrachten. Hoewel het bericht wordt weergegeven aan modulegebruikers, moet het naamgevingsprobleem worden opgelost door de auteur van de module.
Als u het waarschuwingsbericht wilt onderdrukken, gebruikt u de parameter DisableNameChecking van de Import-Module cmdlet.
Ingebouwde modules en snap-ins
In PowerShell 2.0 en in oudere hostprogramma's in PowerShell 3.0 en hoger worden de kernopdrachten die met PowerShell zijn geïnstalleerd, verpakt in snap-ins die automatisch worden toegevoegd aan elke PowerShell-sessie.
Vanaf PowerShell 3.0 wordt voor hostprogramma's die de API voor de InitialSessionState.CreateDefault2 eerste sessiestatus implementeren, de Microsoft.PowerShell.Core-module standaard aan elke sessie toegevoegd. Modules worden automatisch geladen bij het eerste gebruik.
Opmerking
Externe sessies, inclusief sessies die worden gestart met behulp van de New-PSSession cmdlet, zijn sessies in oudere stijl waarin de ingebouwde opdrachten zijn verpakt in snap-ins.
De volgende modules (of snap-ins) worden geïnstalleerd met PowerShell.
- Microsoft.PowerShell.Archive
- Microsoft.PowerShell.Core
- Microsoft.PowerShell.Diagnostics
- Microsoft.PowerShell.Host
- Microsoft.PowerShell.Management
- Microsoft.PowerShell.ODataUtils
- Microsoft.PowerShell.Security
- Microsoft.PowerShell.Utility
- Microsoft.WSMan.Management
- Pakketbeheer
- PowerShellGet
- PSDesiredStateConfiguration
- PSReadline
- PSScheduledJob (geplande taak in PowerShell)
- PSWorkstroom
- PSWorkflowUtility
- ISE
Module-gebeurtenissen vastleggen
Vanaf PowerShell 3.0 kunt u uitvoeringsgebeurtenissen vastleggen voor de cmdlets en functies in PowerShell-modules en snap-ins door de eigenschap LogPipelineExecutionDetails van modules en snap-ins in te stellen op $True.
U kunt ook een groepsbeleidsinstelling gebruiken, Modulelogboekregistratie inschakelen, om modulelogboekregistratie in alle PowerShell-sessies in te schakelen. Zie about_EventLogs en about_Group_Policy_Settings voor meer informatie.
Zie ook
about_DesiredStateConfiguration