PowerShell & Scripting
PowerShell-Modul
Allgemeine Infos
Ein PowerShell-Modul fasst zusammengehörige Befehle, Funktionen, Variablen und Hilfsdateien zu einem Paket zusammen. Microsoft unterscheidet Skriptmodule (in PowerShell geschrieben, meist .psm1) und native Module (kompilierte .NET-Assemblys in C#). Ein Modulmanifest (.psd1) beschreibt Version, Abhängigkeiten und exportierte Befehle.
Zentrale Quelle ist die PowerShell Gallery. Als Paketmanager ersetzt Microsoft.PowerShell.PSResourceGet die älteren Module PowerShellGet und PackageManagement. PSResourceGet ist seit PowerShell 7.4.0 enthalten, aktuell ist Version 1.2.0. Die in Windows PowerShell 5.1 mitgelieferte PowerShellGet-Version 1.0.0.1 wird nicht mehr unterstützt und sollte aktualisiert werden.
Wichtige Module in Microsoft-Umgebungen sind Az (Azure), Microsoft.Graph, ExchangeOnlineManagement, MicrosoftTeams, PnP.PowerShell und ActiveDirectory aus den RSAT. Abgrenzung: Die PowerShell Gallery ist das Repository, ein Modul ist das einzelne Paket darin.
Funktionsweise & Details
Der Lebenszyklus eines Moduls:
- Installation: Install-PSResource oder Install-Module legt das Modul im Bereich CurrentUser oder AllUsers ab. Unter Windows sind das unter anderem $HOME\Documents\PowerShell\Modules und $Env:ProgramFiles\PowerShell\Modules.
- Suche: $Env:PSModulePath enthält alle Pfade, in denen PowerShell nach Modulen sucht.
- Laden: PowerShell importiert ein installiertes Modul automatisch, sobald Du einen seiner Befehle zum ersten Mal nutzt. $PSModuleAutoLoadingPreference (All, ModuleQualified, None) steuert dieses Verhalten.
- Manueller Import: Import-Module lädt Module außerhalb von PSModulePath. Mit -Prefix vergibst Du einen Namenspräfix, mit -NoClobber verhinderst Du, dass vorhandene Befehle überschrieben werden.
- Pflege: Update-Module bzw. Update-PSResource holt neue Versionen. Klassen aus Modulen stehen erst nach einer using module-Anweisung zur Verfügung, Import-Module lädt sie nicht.
Vorteile & Nutzen
- Wiederverwendung: Einmal geschriebene Funktionen stehen allen Skripten und Kollegen zur Verfügung, statt in jedem Skript kopiert zu werden
- Versionierung: Manifest und Gallery verwalten Versionen, Du kannst deshalb gezielt eine getestete Version festschreiben
- Automatisches Laden: Befehle sind ohne Import-Zeile nutzbar, solange das Modul im PSModulePath liegt
- Herstellerunterstützung: Microsoft und Drittanbieter liefern ihre Verwaltungsbefehle als Modul, Updates kommen zentral über die Gallery
Praxisbeispiel
Eine IT-Abteilung eines Logistikers mit 450 Mitarbeitenden hat Hilfsfunktionen für Benutzeranlage, Lizenzreport und Postfachprüfung über 30 Skripte verteilt. Sie fasst die Funktionen in einem internen Skriptmodul mit Manifest zusammen und stellt es über ein internes Repository auf einer Dateifreigabe bereit. Die Admin-Server installieren eine festgelegte Version, neue Versionen gehen erst nach Test auf einem Jump-Host in Produktion. Fehlerkorrekturen erreichen so alle Skripte gleichzeitig.
Worauf sollte man achten?
- Module pro PowerShell-Version installieren: Windows PowerShell 5.1 und PowerShell 7 nutzen getrennte Modulpfade
- Große Metamodule wie Microsoft.Graph (über 40 Untermodule) nur in den benötigten Teilen installieren, das verkürzt Ladezeiten
- Auf Servern Versionen festschreiben (RequiredVersion) statt automatisch die neueste Version zu ziehen
- Unter Windows PowerShell 5.1 zuerst PowerShellGet bzw. PSResourceGet aktualisieren, die mitgelieferte Version 1.0.0.1 ist nicht mehr unterstützt
- Herausgeber und Downloadzahlen in der Gallery prüfen, bevor Du ein unbekanntes Modul mit Admin-Rechten ausführst
Lizenz & Verfügbarkeit
Die PowerShell Gallery und die Paketmanager PSResourceGet und PowerShellGet sind kostenlos. Die Lizenzbedingungen gelten je Modul: Viele Microsoft-Module sind Open Source, Drittanbieter-Module haben eigene Lizenzen. Stand: Oktober 2026.
Fazit
Module sind der Weg, PowerShell zu erweitern und eigenen Code sauber zu verteilen. Für neue Installationen ist PSResourceGet der empfohlene Paketmanager.
Weiterführende Links
Verwandte Artikel
PHscripts.de | PSscripts.de
PowerShell 7: Module und WPF‑GUIs – ein Praxisleitfaden
PHscripts.de | PSscripts.de
PS > PowerShell 7: Vergleich zu PowerShell 5
PowerShell
PowerShell | Artifact Registry ersetzt PowerShell Gallery
PHscripts.de | PSscripts.de