Haben Sie jemals ein PowerShell-Befehl ausgeführt und die gefürchtete Fehlermeldung „Der Begriff wird nicht als Name eines Cmdlets erkannt“ erhalten? Hier ist der Haken: Das Problem könnte so einfach sein wie ein fehlendes oder nicht importiertes Modul. Selbst in modernen PowerShell-Versionen ist es entscheidend, zu verstehen, wie Module funktionieren, um diese Probleme zu diagnostizieren und zu beheben.
Die gute Nachricht? Dieser Leitfaden behandelt alles, angefangen bei der Überprüfung, welche Module PowerShell derzeit importiert hat, bis hin dazu, wie man sie importiert, entfernt und erneut importiert. Am Ende werden Sie in der Lage sein, PowerShell-Module nahtlos zu verwalten, sei es zum Beheben unerwarteter Fehler oder zum Arbeiten an benutzerdefinierten Modulen.
Tauchen Sie ein und lassen Sie sich von PowerShell-Modulen dabei helfen, Ihren Workflow mit Zuversicht zu optimieren!
Überprüfen der importierten Module
PowerShell-Befehle können mit kryptischen Fehlermeldungen fehlschlagen, wenn Module nicht ordnungsgemäß geladen sind. Zum Beispiel wird beim Versuch, Get-ADUser auszuführen, ohne zuerst das ActiveDirectory-Modul zu importieren, ein „Befehl nicht gefunden“ Fehler angezeigt. Ebenso erfordert die Verwendung von Azure-Befehlen, dass das Az-Modul in Ihrer Sitzung vorhanden ist.
PowerShell muss das relevante Modul importieren, um sicherzustellen, dass Befehle wie erwartet funktionieren und seine Befehle verfügbar sind.
Um die derzeit importierten Module anzuzeigen, verwenden Sie:
Get-Module
Wenn Sie Get-Module ausführen, sehen Sie eine ähnliche Ausgabe wie diese:
ModuleType Version Name ExportedCommands ---------- ------- ---- ---------------- Manifest 7.0.0.0 Microsoft.PowerShell.Management {Add-Computer, Add-Content, Checkpoint-Computer...} Manifest 7.0.0.0 Microsoft.PowerShell.Utility {Add-Member, Add-Type, Clear-Variable...} Script 2.0.0 PSReadline {Get-PSReadLineKeyHandler, Get-PSReadLineOption...} Binary 1.0.0.1 SmbShare {Get-SmbShare, Set-SmbShare, Remove-SmbShare...}
Dies zeigt eine Liste aller derzeit geladenen Module in Ihrer PowerShell-Sitzung an, zeigt ihren Typ (Manifest, Skript oder Binär), die Versionsnummer, den Modulnamen und eine Zusammenfassung der von ihnen bereitgestellten Befehle. Die Spalte ExportedCommands zeigt an, welche Cmdlets von jedem Modul verfügbar sind.
Als nächstes untersuchen Sie Befehle aus einem Modul, das Sie importieren können:
Get-Module -Name SmbShare -ListAvailable | Select exportedcommands
Wenn Sie diesen Befehl ausführen, sehen Sie eine Ausgabe, die alle verfügbaren Befehle im SmbShare-Modul auflistet. Zum Beispiel:
ExportedCommands ---------------- {Get-SmbShare, New-SmbShare, Remove-SmbShare, Set-SmbShare, Get-SmbShareAccess, Grant-SmbShareAccess, Block-SmbShareAccess, Revoke-SmbShareAccess, Get-SmbMapping}
Diese Ausgabe zeigt alle Cmdlets, die Sie aus dem SmbShare-Modul verwenden können. Jeder Befehl dient einem bestimmten Zweck zur Verwaltung von SMB-Freigaben:
- Get-SmbShare: Listet alle SMB-Freigaben auf dem System auf
- New-SmbShare: Erstellt eine neue SMB-Freigabe
- Remove-SmbShare: Löscht eine vorhandene SMB-Freigabe
- Set-SmbShare: Ändert Eigenschaften einer vorhandenen Freigabe
Zu verstehen, welche Befehle verfügbar sind, hilft Ihnen, das richtige Werkzeug für Ihre Aufgabe auszuwählen. Sie können ähnliche Befehle verwenden, um die Fähigkeiten anderer Module zu erkunden.
Module automatisch importieren
Um zu sehen, wie PowerShell Module dynamisch behandelt, hier ein Beispiel, das das dynamische Laden von Modulen zeigt:
PS> Get-Module ModuleType Version Name ExportedCommands ---------- ------- ---- ---------------- Manifest 7.0.0.0 Microsoft.PowerShell.Management {Add-Computer, Add-Content...} Manifest 7.0.0.0 Microsoft.PowerShell.Utility {Add-Member, Add-Type...} Script 2.0.0 PSReadline {Get-PSReadLineKeyHandler...} PS> Get-SmbShare PS> Get-Module ModuleType Version Name ExportedCommands ---------- ------- ---- ---------------- Manifest 7.0.0.0 Microsoft.PowerShell.Management {Add-Computer, Add-Content...} Manifest 7.0.0.0 Microsoft.PowerShell.Utility {Add-Member, Add-Type...} Script 2.0.0 PSReadline {Get-PSReadLineKeyHandler...} Binary 1.0.0.1 SmbShare {Get-SmbShare, Set-SmbShare...}
Wie oben gezeigt, importiert PowerShell automatisch das SmbShare-Modul, wenn Sie Get-SmbShare ausführen. Sie sehen, dass dieses Modul nach dem Ausführen des Befehls in der Liste erscheint.
Module entfernen und erneut importieren
Sie müssen möglicherweise ein Modul aus dem Speicher entfernen, zum Beispiel beim Testen neuer Konfigurationen oder beim Beheben von Konflikten. Keine Sorge; PowerShell ermöglicht es Ihnen, ein Modul ohne Deinstallation zu entfernen, sodass Sie die Sitzung bei Bedarf zurücksetzen oder aktualisieren können.
Um ein Modul aus dem Speicher zu entfernen:
Remove-Module -Name SmbShare
Der Remove-Module
-Befehl entfernt das Modul aus dem Speicher, deinstalliert es jedoch nicht vom System. Obwohl das Entfernen von Modulen im täglichen Gebrauch selten vorkommt, ist es für spezifische Szenarien nützlich.
Um das Modul manuell erneut zu importieren:
Import-Module -Name SmbShare
Manuelles Importieren kann hilfreich sein, wenn Probleme behoben werden müssen oder in benutzerdefinierten Umgebungen gearbeitet wird.
Erneutes Importieren von Modulen nach Änderungen
Beim Arbeiten an einem Modul in der Entwicklung können Situationen auftreten, in denen vorgenommene Änderungen nicht sofort wirksam werden. Alte Daten oder Konfigurationen können noch im Modul geladen sein, was dieses Verhalten verursacht.
Das erneute Importieren des Moduls stellt sicher, dass PowerShell die neueste Version verwendet. Wenn Sie ein Modul, an dem Sie arbeiten, ändern, müssen Sie es erneut importieren.
Sie könnten sowohl Remove-Module
als auch Import-Module
verwenden oder den Prozess mit dem Force
-Parameter vereinfachen:
Import-Module -Name SmbShare -Force
Der Force
-Parameter entlädt und lädt das Modul in einem Schritt neu, was ideal für Entwicklungs- und Testworkflows ist.
Fazit
In diesem Leitfaden haben Sie gelernt, wie Sie PowerShell-Module verwalten – Importe überprüfen und importieren, Module entfernen und erneut importieren. Sie haben auch erkundet, wie PowerShell Module dynamisch importiert und wie Sie das Laden steuern können, um manuell Probleme zu beheben oder benutzerdefinierte Konfigurationen zu testen.
Wenden Sie nun diese Fähigkeiten an, indem Sie mit benutzerdefinierten Modulen in Ihren Skripten experimentieren. Erkunden Sie die Modulentwicklung und verwenden Sie den Force
-Parameter, um sicherzustellen, dass Änderungen wirksam werden.
Verbessern Sie Ihre Fehlersuche, Skriptentwicklung und Ihren gesamten PowerShell-Workflow mit PowerShell-Modulen!
Source:
https://adamtheautomator.com/powershell-modules-guide-2/