Hinweis
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, sich anzumelden oder das Verzeichnis zu wechseln.
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, das Verzeichnis zu wechseln.
Kurzbeschreibung
Erläutert, wie PowerShell-Module installiert, importiert und verwendet werden.
Lange Beschreibung
Ein Modul ist ein Paket, das PowerShell-Member enthält, z. B. Cmdlets, Anbieter, Funktionen, Workflows, Variablen und Aliase.
Personen, die Befehle schreiben, können Module verwenden, um ihre Befehle zu organisieren und sie für andere freizugeben. Personen, die Module erhalten, können die Befehle in den Modulen zu ihren PowerShell-Sitzungen hinzufügen und sie genau wie die integrierten Befehle verwenden.
In diesem Thema wird die Verwendung von PowerShell-Modulen erläutert. Informationen zum Schreiben von PowerShell-Modulen finden Sie unter Schreiben eines PowerShell-Moduls.
Was ist ein Modul?
Ein Modul ist ein Paket, das PowerShell-Member enthält, z. B. Cmdlets, Anbieter, Funktionen, Workflows, Variablen und Aliase. Die Member dieses Pakets können in einem PowerShell-Skript, einer kompilierten DLL oder einer Kombination aus beidem implementiert werden. Diese Dateien sind in der Regel in einem einzigen Verzeichnis gruppiert. Weitere Informationen finden Sie unter Grundlegendes zu einem Windows PowerShell-Modul in der SDK-Dokumentation.
Automatisches Laden von Modulen
Ab PowerShell 3.0 importiert PowerShell Module automatisch, wenn Sie zum ersten Mal einen Befehl in einem installierten Modul ausführen. Sie können die Befehle jetzt in einem Modul ohne Einrichtung oder Profilkonfiguration verwenden, sodass Sie Module nach der Installation auf Ihrem Computer nicht mehr verwalten müssen.
Auch die Befehle in einem Modul sind leichter zu finden. Das Get-Command Cmdlet ruft jetzt alle Befehle in allen installierten Modulen ab, auch wenn sie sich noch nicht in der Sitzung befinden. Sie können einen Befehl finden und ihn verwenden, ohne zu importieren, und müssen das Modul zuerst importieren.
Jedes der folgenden Beispiele bewirkt, dass das CimCmdlets-Modul, das , enthält Get-CimInstance, in die Sitzung importiert wird.
Ausführen des Befehls
Get-CimInstance Win32_OperatingSystemBefehl abrufen
Get-Command Get-CimInstanceHilfe für den Befehl abrufen
Get-Help Get-CimInstance
Get-Command Befehle, die ein Platzhalterzeichen (*) enthalten, gelten als zur Ermittlung, nicht zur Verwendung und importieren keine Module.
Nur Module, die an dem Speicherort gespeichert sind, der durch die Umgebungsvariable PSModulePath angegeben wird, werden automatisch importiert. Module an anderen Speicherorten müssen durch Ausführen des Cmdlets Import-Module importiert werden.
Außerdem wird bei Befehlen, die PowerShell-Anbieter verwenden, ein Modul nicht automatisch importiert. Wenn Sie z. B. einen Befehl verwenden, für den das Laufwerk WSMan: erforderlich ist, z. B. das Get-PSSessionConfiguration Cmdlet, müssen Sie möglicherweise das Import-Module Cmdlet ausführen, um das Microsoft.WSMan.Management-Modul zu importieren, das das WSMan: Laufwerk enthält.
Sie können weiterhin den Import-Module Befehl zum Importieren eines Moduls ausführen und die $PSModuleAutoloadingPreference Variable verwenden, um den automatischen Import von Modulen zu aktivieren, zu deaktivieren und zu konfigurieren. Weitere Informationen finden Sie unter about_Preference_Variables.
So verwenden Sie ein Modul
Um ein Modul zu verwenden, führen Sie die folgenden Aufgaben aus:
- Installieren Sie das Modul. (Dies wird oft für Sie gemacht.)
- Suchen Sie die Befehle, die das Modul hinzugefügt hat.
- Verwenden Sie die Befehle, die das Modul hinzugefügt hat.
In diesem Thema wird erläutert, wie Sie diese Aufgaben ausführen. Es enthält auch weitere nützliche Informationen zum Verwalten von Modulen.
So installieren Sie ein Modul
Wenn Sie ein Modul als Ordner mit Dateien erhalten, müssen Sie es auf Ihrem Computer installieren, bevor Sie es in PowerShell verwenden können.
Die meisten Module werden für Sie installiert. PowerShell wird mit mehreren vorinstallierten Modulen geliefert, die manchmal als Kernmodule bezeichnet werden. Wenn auf Windows-basierten Computern Features, die im Betriebssystem enthalten sind, über Cmdlets zu ihrer Verwaltung verfügen, werden diese Module vorinstalliert. Wenn Sie ein Windows-Feature installieren, z. B. mithilfe des Assistenten zum Hinzufügen von Rollen und Features im Server-Manager oder des Dialogfelds Windows-Features aktivieren oder deaktivieren in der Systemsteuerung, werden alle PowerShell-Module installiert, die Teil des Features sind. Viele andere Module werden in einem Installationsprogramm oder Setup-Programm geliefert, das das Modul installiert.
Verwenden Sie den folgenden Befehl, um ein Modulverzeichnis für den aktuellen Benutzer zu erstellen:
New-Item -Type Directory -Path $HOME\Documents\PowerShell\Modules
Kopieren Sie den gesamten Modulordner in das Verzeichnis Modules. Sie können eine beliebige Methode zum Kopieren des Ordners verwenden, einschließlich Windows Explorer und Cmd.exesowie PowerShell. Verwenden Sie in PowerShell das Cmdlet Copy-Item. Geben Sie z. B. Folgendes ein, um den Ordner "MyModule" in C:\ps-test\MyModule das Verzeichnis "Modules" zu kopieren:
Copy-Item -Path C:\ps-test\MyModule -Destination `
$HOME\Documents\PowerShell\Modules
Sie können ein Modul an einem beliebigen Ort installieren, aber das Installieren Ihrer Module an einem Standardmodulspeicherort erleichtert die Verwaltung. Weitere Informationen zu den standardmäßigen Modulspeicherorten finden Sie im Abschnitt Modul- und DSC-Ressourcenstandorte und PSModulePath .
So finden Sie installierte Module
Geben Sie Folgendes ein, um nach Modulen zu suchen, die an einem Standardmodulspeicherort installiert, aber noch nicht in Ihre Sitzung importiert wurden:
Get-Module -ListAvailable
Um die Module zu finden, die bereits in Ihre Sitzung importiert wurden, geben Sie an der PowerShell-Eingabeaufforderung Folgendes ein:
Get-Module
Weitere Informationen zum Get-Module Cmdlet finden Sie unter Get-Module.
So finden Sie die Befehle in einem Modul
Verwenden Sie das Cmdlet Get-Command, um alle verfügbaren Befehle zu finden. Sie können die Parameter des Cmdlets Get-Command verwenden, um Befehle wie Modul, Name und Substantiv zu filtern.
Um alle Befehle in einem Modul zu finden, geben Sie Folgendes ein:
Get-Command -Module <module-name>
Geben Sie z. B. Folgendes ein, um die Befehle im BitsTransfer-Modul zu finden:
Get-Command -Module BitsTransfer
Weitere Informationen zum cmdlet Get-Command finden Sie unter Get-Command.
So erhalten Sie Hilfe zu den Befehlen in einem Modul
Wenn das Modul Hilfedateien für die exportierten Befehle enthält, zeigt das Get-Help Cmdlet die Hilfethemen an. Verwenden Sie das gleiche Get-Help Befehlsformat, das Sie auch zum Abrufen von Hilfe für jeden Befehl in PowerShell verwenden würden.
Ab PowerShell 3.0 können Sie Hilfedateien für ein Modul herunterladen und Updates für die Hilfedateien herunterladen, damit sie nie veraltet sind.
Geben Sie Folgendes ein, um Hilfe zu einem Befehl in einem Modul zu erhalten:
Get-Help <command-name>
Geben Sie Folgendes ein, um online Hilfe für Befehle in einem Modul zu erhalten:
Get-Help <command-name> -Online
Geben Sie Folgendes ein, um die Hilfedateien für die Befehle in einem Modul herunterzuladen und zu installieren:
Update-Help -Module <module-name>
Weitere Informationen finden Sie unter Get-Help und Update-Help.
So importieren Sie ein Modul
Möglicherweise müssen Sie ein Modul oder eine Moduldatei importieren. Der Import ist erforderlich, wenn ein Modul nicht an den Speicherorten installiert ist, die durch die Umgebungsvariable PSModulePath angegeben werden, $env:PSModulePathoder wenn das Modul aus einer Datei besteht, z. B. einer .dll- oder PSM1-Datei, anstelle eines typischen Moduls, das als Ordner bereitgestellt wird.
Sie können auch ein Modul importieren, damit Sie die Parameter des Import-Module Befehls verwenden können, z. B. den Prefix-Parameter, der den Substantivnamen aller importierten Befehle ein eindeutiges Präfix hinzufügt, oder den NoClobber-Parameter , der verhindert, dass das Modul Befehle hinzufügt, die vorhandene Befehle in der Sitzung ausblenden oder ersetzen würden.
Verwenden Sie zum Importieren von Modulen das Import-Module Cmdlet.
Verwenden Sie das folgende Befehlsformat, um Module an einem PSModulePath-Speicherort in die aktuelle Sitzung zu importieren.
Import-Module <module-name>
Mit dem folgenden Befehl wird z. B. das BitsTransfer-Modul in die aktuelle Sitzung importiert.
Import-Module BitsTransfer
Um ein Modul zu importieren, das sich nicht an einem Standardmodulspeicherort befindet, verwenden Sie den vollqualifizierten Pfad zum Modulordner im Befehl.
Geben Sie z. B. Folgendes ein, um das TestCmdlets-Modul im C:\ps-test Verzeichnis der Sitzung hinzuzufügen:
Import-Module C:\ps-test\TestCmdlets
Um eine Moduldatei zu importieren, die nicht in einem Modulordner enthalten ist, verwenden Sie den vollqualifizierten Pfad zur Moduldatei im Befehl.
Geben Sie beispielsweise Folgendes ein, um das TestCmdlets.dll Modul im verzeichnis C:\ps-test zu Ihrer Sitzung hinzuzufügen:
Import-Module C:\ps-test\TestCmdlets.dll
Weitere Informationen zum Hinzufügen von Modulen zu Ihrer Sitzung finden Sie unter Import-Module.
So importieren Sie ein Modul in jede Sitzung
Der befehl Import-Module importiert Module in Ihre aktuelle PowerShell-Sitzung. Um ein Modul in jede von Ihnen gestartete PowerShell-Sitzung zu importieren, fügen Sie ihrem PowerShell-Profil den Befehl Import-Module hinzu.
Weitere Informationen zu Profilen finden Sie unter about_Profiles.
So entfernen Sie ein Modul
Wenn Sie ein Modul entfernen, werden die hinzugefügten Befehle aus der Sitzung gelöscht.
Um ein Modul aus der Sitzung zu entfernen, verwenden Sie das folgende Befehlsformat.
Remove-Module <module-name>
Mit dem folgenden Befehl wird z. B. das BitsTransfer-Modul aus der aktuellen Sitzung entfernt.
Remove-Module BitsTransfer
Durch das Entfernen eines Moduls wird der Vorgang des Importierens eines Moduls rückgängig gemacht. Durch das Entfernen eines Moduls wird das Modul nicht deinstalliert. Weitere Informationen finden Sie unter Remove-Module.
Modul- und DSC-Ressourcenstandorte und PSModulePath
Die $env:PSModulePath Umgebungsvariable enthält eine Liste der Ordnerspeicherorte, die durchsucht werden, um Module und Ressourcen zu finden.
Standardmäßig sind die zugewiesenen effektiven Speicherorte für $env:PSModulePath:
Systemweite Standorte:
$PSHOME\ModulesDiese Ordner enthalten Module, die im Lieferumfang von Windows und PowerShell enthalten sind.
DSC-Ressourcen, die in PowerShell enthalten sind, werden in dem
$PSHOME\Modules\PSDesiredStateConfiguration\DSCResourcesOrdner gespeichert.Benutzerspezifische Module: Hierbei handelt es sich um Module, die vom Benutzer im Bereich des Benutzers installiert werden.
Install-Moduleverfügt über einen Scope-Parameter, mit dem Sie angeben können, ob das Modul für den aktuellen Benutzer oder für alle Benutzer installiert ist. Weitere Informationen finden Sie unter Install-Module.Der benutzerspezifische CurrentUser-Speicherort unter Windows ist der Ordner, der
PowerShell\Modulessich im Dokumentverzeichnis in Ihrem Benutzerprofil befindet. Der genaue Pfad dieses Speicherorts variiert je nach Windows-Version und je nachdem, ob Sie die Ordnerumleitung verwenden oder nicht. Microsoft OneDrive kann auch den Speicherort Ihres Ordners "Dokumente " ändern.Unter Windows 10 und höher ist
$HOME\Documents\PowerShell\Modulesdieser Speicherort standardmäßig . Unter Linux oder Mac ist$HOME/.local/share/powershell/Modulesder CurrentUser-Speicherort .Hinweis
Sie können den Speicherort des Ordners "Dokumente" mit dem folgenden Befehl überprüfen:
[Environment]::GetFolderPath('MyDocuments').Der AllUsers-Speicherort befindet sich
$env:PROGRAMFILES\PowerShell\Modulesunter Windows. Unter Linux oder Mac werden die Module unter/usr/local/share/powershell/Modulesgespeichert.
Hinweis
Um Dateien im verzeichnis $env:Windir\System32 hinzuzufügen oder zu ändern, starten Sie PowerShell mit der Option Als Administrator ausführen.
Sie können die Standardspeicherorte des Moduls auf Ihrem System ändern, indem Sie den Wert der Umgebungsvariablen PSModulePath ändern. $Env:PSModulePath Die Umgebungsvariable PSModulePath ist der Umgebungsvariablen Path nachempfunden und hat das gleiche Format.
Geben Sie Folgendes ein, um die Standardspeicherorte des Moduls anzuzeigen:
$Env:PSModulePath
Verwenden Sie das folgende Befehlsformat, um einen Standardmodulspeicherort hinzuzufügen.
$Env:PSModulePath = $Env:PSModulePath + ";<path>"
Der Semikolon (;) im Befehl trennt den neuen Pfad vom Pfad, der ihm in der Liste vorausgeht.
Geben Sie beispielsweise Folgendes ein, um das C:\ps-test\Modules Verzeichnis hinzuzufügen:
$Env:PSModulePath + ";C:\ps-test\Modules"
Verwenden Sie das folgende Befehlsformat, um einen Standardmodulspeicherort unter Linux oder MacOS hinzuzufügen:
$Env:PSModulePath += ":<path>"
Geben Sie z. B. Folgendes ein, um das /usr/local/Fabrikam/Modules Verzeichnis dem Wert der Umgebungsvariablen PSModulePath hinzuzufügen:
$Env:PSModulePath += ":/usr/local/Fabrikam/Modules"
Unter Linux oder MacOS trennt der Doppelpunkt (:) im Befehl den neuen Pfad von dem Pfad, der ihm in der Liste vorangestellt ist.
Wenn Sie PSModulePath einen Pfad hinzufügen, Get-Module schließen Import-Module Befehle Module in diesem Pfad ein.
Der Wert, den Sie festlegen, wirkt sich nur auf die aktuelle Sitzung aus. Um die Änderung dauerhaft zu machen, fügen Sie den Befehl Ihrem PowerShell-Profil hinzu, oder verwenden Sie System in der Systemsteuerung, um den Wert der Umgebungsvariablen PSModulePath in der Registrierung zu ändern.
Um die Änderung dauerhaft zu machen, können Sie auch die SetEnvironmentVariable-Methode der System.Environment-Klasse verwenden, um der Umgebungsvariablen PSModulePath einen Path hinzuzufügen.
Weitere Informationen zur Variablen PSModulePath finden Sie unter about_Environment_Variables.
Module und Namenskonflikte
Namenskonflikte treten auf, wenn mehrere Befehle in der Sitzung denselben Namen haben. Beim Importieren eines Moduls tritt ein Namenskonflikt auf, wenn Befehle im Modul dieselben Namen wie Befehle oder Elemente in der Sitzung haben.
Namenskonflikte können dazu führen, dass Befehle ausgeblendet oder ersetzt werden.
Versteckt
Ein Befehl wird ausgeblendet, wenn es sich nicht um den Befehl handelt, der ausgeführt wird, wenn Sie den Befehlsnamen eingeben, Sie ihn jedoch mit einer anderen Methode ausführen können, z. B. indem Sie den Befehlsnamen mit dem Namen des Moduls oder Snap-Ins qualifizieren, aus dem er stammt.
Ausgewechselt
Ein Befehl wird ersetzt, wenn Sie ihn nicht ausführen können, weil er durch einen Befehl mit demselben Namen überschrieben wurde. Selbst wenn Sie das Modul entfernen, das den Konflikt verursacht hat, können Sie keinen ersetzten Befehl ausführen, es sei denn, Sie starten die Sitzung neu.
Import-Module kann Befehle hinzufügen, die in der aktuellen Sitzung andere Befehle ausblenden und ersetzen. Außerdem können Befehle in Ihrer Sitzung Befehle ausblenden, die das Modul hinzugefügt hat.
Verwenden Sie zum Erkennen von Namenskonflikten den Parameter All des Cmdlets Get-Command. Ab PowerShell 3.0 werden nur die Befehle abgerufen, Get-Command die ausgeführt werden, wenn Sie den Befehlsnamen eingeben. Der All-Parameter ruft alle Befehle mit dem angegebenen Namen in der Sitzung ab.
Um Namenskonflikte zu verhindern, verwenden Sie die Parameter NoClobber- oder Präfix- des Cmdlets Import-Module. Der Parameter Präfix fügt den Namen der importierten Befehle ein Präfix hinzu, sodass sie in der Sitzung eindeutig sind. Der NoClobber-Parameter importiert keine Befehle, die vorhandene Befehle in der Sitzung ausblenden oder ersetzen würden.
Sie können auch die Parameter Alias, Cmdlet, Functionund Variable Parameter von Import-Module verwenden, um nur die Befehle auszuwählen, die Sie importieren möchten, und Sie können Befehle ausschließen, die Namenskonflikte in Ihrer Sitzung verursachen.
Modulautoren können Namenskonflikte verhindern, indem sie die DefaultCommandPrefix- Eigenschaft des Modulmanifests verwenden, um allen Befehlsnamen ein Standardpräfix hinzuzufügen. Der Wert des parameters Prefix hat Vorrang vor dem Wert von DefaultCommandPrefix.
Auch wenn ein Befehl ausgeblendet ist, können Sie ihn ausführen, indem Sie den Befehlsnamen mit dem Namen des Moduls oder Snap-Ins qualifizieren, aus dem er stammt.
Die PowerShell-Befehlsrangfolgeregeln bestimmen, welcher Befehl ausgeführt wird, wenn die Sitzung Befehle mit demselben Namen enthält.
Wenn eine Sitzung beispielsweise eine Funktion und ein Cmdlet mit demselben Namen enthält, führt PowerShell die Funktion standardmäßig aus. Wenn die Sitzung Befehle desselben Typs mit demselben Namen enthält, z. B. zwei Cmdlets mit demselben Namen, wird standardmäßig der zuletzt hinzugefügte Befehl ausgeführt.
Weitere Informationen, einschließlich einer Erläuterung der Rangfolgeregeln und Anweisungen zum Ausführen ausgeblendeter Befehle, finden Sie unter about_Command_Precedence.
Module und Snap-Ins
Sie können Ihrer Sitzung Befehle aus Modulen und Snap-Ins hinzufügen. Module können alle Arten von Befehlen hinzufügen, einschließlich Cmdlets, Anbietern und Funktionen, sowie Elemente wie Variablen, Aliase und PowerShell-Laufwerke. Snap-Ins können nur Cmdlets und Anbieter hinzufügen.
Bevor Sie ein Modul oder Snap-In aus der Sitzung entfernen, verwenden Sie die folgenden Befehle, um zu bestimmen, welche Befehle entfernt werden sollen.
Verwenden Sie das folgende Befehlsformat, um die Quelle eines Cmdlets in Ihrer Sitzung zu suchen:
Get-Command <cmdlet-name> | Format-List -Property verb,noun,pssnapin,module
Um beispielsweise die Quelle des cmdlets Get-Date zu finden, geben Sie Folgendes ein:
Get-Command Get-Date | Format-List -Property verb,noun,module
Modulbezogene Warnungen und Fehler
Die Befehle, die ein Modul exportiert, sollten den Benennungsregeln für PowerShell-Befehle folgen. Wenn das importierte Modul Cmdlets oder Funktionen exportiert, deren Namen nicht genehmigte Verben enthalten, zeigt das Cmdlet Import-Module die folgende Warnmeldung an.
WARNUNG: Einige importierte Befehlsnamen enthalten nicht genehmigte Verben, die sie möglicherweise weniger auffindbar machen. Verwenden Sie den Verbose-Parameter für weitere Details oder Typ Get-Verb, um die Liste der genehmigten Verben anzuzeigen.
Diese Meldung ist nur eine Warnung. Das vollständige Modul wird weiterhin importiert, einschließlich der nicht konformen Befehle. Obwohl die Meldung für Modulbenutzer angezeigt wird, sollte das Benennungsproblem vom Modulautor behoben werden.
Um die Warnmeldung zu unterdrücken, verwenden Sie den DisableNameChecking-Parameter des Import-Module Cmdlets.
Integrierte Module und Snap-Ins
In PowerShell 2.0 und in älteren Hostprogrammen in PowerShell 3.0 und höher werden die Kernbefehle, die mit PowerShell installiert werden, in Snap-Ins verpackt, die jeder PowerShell-Sitzung automatisch hinzugefügt werden.
Ab PowerShell 3.0 wird für Hostprogramme, die die API für den InitialSessionState.CreateDefault2 anfänglichen Sitzungszustand implementieren, das Microsoft.PowerShell.Core-Snap-In standardmäßig jeder Sitzung hinzugefügt. Die Module werden bei der ersten Verwendung automatisch geladen.
Hinweis
Remotesitzungen, einschließlich Sitzungen, die mit dem New-PSSession Cmdlet gestartet werden, sind Sitzungen im älteren Stil, in denen die integrierten Befehle in Snap-Ins verpackt sind.
Die folgenden Module (oder Snap-Ins) werden mit PowerShell installiert.
- Cim-Cmdlets
- Microsoft.PowerShell.Archiv
- Microsoft.PowerShell.Core
- Microsoft.PowerShell.Diagnostics
- Microsoft.PowerShell.Host
- Microsoft.PowerShell.Management
- Microsoft.PowerShell.Sicherheit
- Microsoft.PowerShell.Hilfsprogramm
- Microsoft.WSMan.Management
- Paketverwaltung
- PowerShellHolen
- PSDesiredStateConfiguration
- PSDiagnostik
- PSReadline (Englisch)
Protokollierungsmodulereignisse
Ab PowerShell 3.0 können Sie Ausführungsereignisse für die Cmdlets und Funktionen in PowerShell-Modulen und Snap-Ins aufzeichnen, indem Sie die LogPipelineExecutionDetails-Eigenschaft von Modulen und Snap-Ins auf $Truefestlegen.
Sie können auch die Gruppenrichtlinieneinstellung "Modulprotokollierung aktivieren" verwenden, um die Modulprotokollierung in allen PowerShell-Sitzungen zu aktivieren. Weitere Informationen finden Sie in den Artikeln Protokollierung und Gruppenrichtlinien.