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-Befehle 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 von Befehlen. Alle Cmdlets und Anbieter in der Sitzung werden durch ein Modul oder ein Snap-In hinzugefügt.
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, sodass Sie einen Befehl suchen und verwenden können, ohne ihn zu importieren.
Jedes der folgenden Beispiele bewirkt, dass das enthaltende Modul Get-Mailbox in die Sitzung importiert wird.
Ausführen des Befehls
Get-Mailbox -Identity ChrisBefehl abrufen
Get-Command Get-MailboxHilfe für den Befehl abrufen
Get-Help Get-Mailbox
Get-Command Befehle, die ein Platzhalterzeichen (*) enthalten, gelten als zur Ermittlung, nicht als 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 "Kern"-Module 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\WindowsPowerShell\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\WindowsPowerShell\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
Im Folgenden finden Sie Standardspeicherorte für PowerShell-Module. Ab PowerShell 4.0 wurden mit der Einführung von DSC ein neues Standardmodul und ein neuer DSC-Ressourcenordner eingeführt. Weitere Informationen zu DSC finden Sie unter about_DesiredStateConfiguration.
System:
$PSHOME\Modulesoder ($env:windir\System32\WindowsPowerShell\v1.0\Modules) Systemmodule sind solche, die im Lieferumfang von Windows und PowerShell enthalten sind.Ab PowerShell 4.0, als PowerShell Desired State Configuration (DSC) eingeführt wurde, werden DSC-Ressourcen, die in PowerShell enthalten sind, auch in
$PSHOME\Modulesdem$PSHOME\Modules\PSDesiredStateConfiguration\DSCResourcesOrdner gespeichert.Aktueller Benutzer:
$HOME\Documents\WindowsPowerShell\Modules($env:UserProfile\Documents\WindowsPowerShell\Modules)oder
$HOME\My Documents\WindowsPowerShell\Modules($env:UserProfile\My Documents\WindowsPowerShell\Modules)Dies ist der Speicherort für vom Benutzer hinzugefügte Module vor PowerShell 4.0.
In PowerShell 4.0 und höheren Versionen von PowerShell werden vom Benutzer hinzugefügte Module und DSC-Ressourcen in C:\Program Files\WindowsPowerShell\Modulesgespeichert. Auf Module und DSC-Ressourcen an diesem Speicherort können alle Benutzer des Computers zugreifen. Diese Änderung war erforderlich, da das DSC-Modul als lokales System ausgeführt wird und nicht auf benutzerspezifische Pfade zugreifen konnte, z. B $home\Documents\WindowsPowerShell\Modules. .
Ab PowerShell 5.0 werden mit dem PowerShellGet-Modul und dem PowerShell-Katalog der von der Community und von Microsoft erstellten Ressourcen Install-Module Module und DSC-Ressourcen standardmäßig installiert C:\Program Files\WindowsPowerShell\Modules .
Hinweis: Um Dateien in dem $env:Windir\System32 Verzeichnis 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>"
Das Semikolon (;) im Befehl trennt den neuen Pfad von dem 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"
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
Weitere Informationen zu PowerShell-Snap-Ins finden Sie unter about_PSSnapins.
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.
- Microsoft.PowerShell.Archiv
- Microsoft.PowerShell.Core
- Microsoft.PowerShell.Diagnostics
- Microsoft.PowerShell.Host
- Microsoft.PowerShell.Management
- Microsoft.PowerShell.ODataUtils
- Microsoft.PowerShell.Sicherheit
- Microsoft.PowerShell.Hilfsprogramm
- Microsoft.WSMan.Management
- Paketverwaltung
- PowerShellHolen
- PSDesiredStateConfiguration
- PSReadline (Englisch)
- PSScheduledJob
- PSWorkflow
- PSWorkflow-Dienstprogramm
- ISE
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 unter about_EventLogs und about_Group_Policy_Settings.
Siehe auch
about_DesiredStateConfiguration