PowerShell-Module – Strukturierte Wiederverwendbarkeit



PowerShell-Skripte wachsen schnell – besonders wenn man sie produktiv einsetzt. An einem gewissen Punkt reicht eine einfache .ps1-Datei nicht mehr. Genau hier kommen PowerShell-Module ins Spiel. Sie helfen dabei, Code zu strukturieren, wiederverwendbar zu machen und sauber zu kapseln.


Vorteile von Modulen

  • Wiederverwendbarkeit: Einmal geschriebene Funktionen können in beliebigen Skripten importiert werden
  • Wartbarkeit: Funktionen sind sauber getrennt und zentral anpassbar
  • Struktur: Kein Chaos mehr aus Copy-Paste-Codeblöcken
  • Autovervollständigung: Geladene Module sind in der PowerShell vollständig dokumentier- und nutzbar
  • Versionierung: Ermöglicht Updates und Kompatibilitätsprüfungen

Ein einfaches Modul schreiben

Ein Modul ist im einfachsten Fall eine Datei mit der Endung .psm1, die PowerShell-Funktionen enthält:

MyTools.psm1

MyTools.psm1
function Get-Greeting {
    param([string]$Name)
    return "Hallo $Name!"
}
 
function Add-Numbers {
    param([int]$A, [int]$B)
    return $A + $B
}

Optional kann man eine zugehörige Manifest-Datei (.psd1) erstellen – dazu gleich mehr.


Modul verwenden

1. Modul in einen bekannten Pfad legen

Beispiel: Eigene Module liegen unter

$HOME\Documents\PowerShell\Modules\MyTools\MyTools.psm1

2. Importieren

Import-Module MyTools

Oder direkt mit Pfadangabe:

Import-Module "C:\Scripts\MyTools.psm1"

3. Verwenden

Get-Greeting -Name "Jens"
Add-Numbers -A 2 -B 3

4. Alle verfügbaren Funktionen auflisten

Get-Command -Module MyTools

Modul mit Manifest erstellen (optional, empfohlen)

Ein Manifest definiert Metadaten zum Modul: Name, Version, Abhängigkeiten usw.

New-ModuleManifest -Path "MyTools.psd1" -RootModule "MyTools.psm1" -Author "Jens Dunzweiler" -Description "Hilfsfunktionen für tägliche Aufgaben" -ModuleVersion "1.0.0"

Die .psd1-Datei kann dann gemeinsam mit dem Modul geladen werden – PowerShell erkennt sie automatisch.


Modul veröffentlichen (lokal oder online)

Lokal:

Kopiere dein Modul nach

$env:PSModulePath

Beispiel:

mkdir "$HOME\Documents\PowerShell\Modules\MyTools"
Copy-Item .\MyTools.ps* "$HOME\Documents\PowerShell\Modules\MyTools\"

Falls du Module öffentlich bereitstellen willst, kannst du sie in die PowerShell Gallery hochladen. Voraussetzung: ein gültiges NuGet-API-Key und Modul mit Manifest.

Publish-Module -Name MyTools -NuGetApiKey "<dein Key>"

Fazit

PowerShell-Module bringen Struktur, Ordnung und Wiederverwendbarkeit in deine Skripte. Egal ob für private Admin-Tools oder öffentliche Pakete – wer regelmäßig mit PowerShell arbeitet, sollte sich früh damit befassen. Ein gutes Modul-Setup spart Zeit, reduziert Fehler und macht komplexe Projekte langfristig wartbar.