Manifest

Ein PowerShell-Manifest (.psd1) ist im Grunde nur eine Hashtable mit vordefinierten Keys. Es enthält die Metadaten und Konfiguration zu deinem Modul – also alles, was PowerShell über dein Modul wissen muss, ohne den eigentlichen Code auszuführen. Deshalb liegt es bewusst in einer eigenen Datei, getrennt vom Modul selbst.


🧱 Grundlegende Metadaten

Das ist die Identität deines Moduls. Ohne das bist du einfach nur irgendein Skript mit Existenzkrise.


🔗 Abhängigkeiten

Hier sagst du: „Ich funktioniere nicht alleine, ich brauche andere.“


🚀 Export (was nach außen sichtbar ist)

Das ist der Teil, wo du entscheidest, was du der Welt zeigst. Oder versteckst.

👉 Klassiker:
'*' = alles exportieren
oder explizit = bessere Kontrolle


🧠 Kompatibilität & Anforderungen

Hier wird’s picky.


📦 Private Daten (der geheime Keller)

Alles, was du selbst definierst.

Beispiel:

PrivateData = @{
    PSData = @{
        Tags = @('UI','Forms')
        ProjectUri = 'https://...'
    }
}


🌐 PSData (wichtig für Gallery etc.)

Teil von PrivateData, aber so wichtig, dass es eigentlich sein eigenes Ding ist.


🧩 Sonstiges (der „Warum gibt’s das?“ Bereich)

Selten gebraucht, aber existiert halt:


🔧 Mini-Beispiel

Damit du nicht nur trockene Theorie hast:

@{
    RootModule        = 'MeinModul.psm1'
    ModuleVersion     = '1.0.0'
    GUID              = '12345678-abcd-1234-abcd-1234567890ab'
    Author            = 'Jonny'
    Description       = 'Mein erstes Modul'

    FunctionsToExport = @('Get-Thing', 'Set-Thing')

    PowerShellVersion = '5.1'

    PrivateData = @{
        PSData = @{
            Tags = @('Example','Test')
        }
    }
}

Der eigentliche Punkt (den viele übersehen)

Du brauchst vielleicht 30% davon wirklich.

Der Rest ist:

Wenn du lokal entwickelst:
RootModule, ModuleVersion, FunctionsToExport
→ fertig, läuft.


Revision #5
Created 2026-04-12 21:28:06 UTC by John-Andreas Borinas
Updated 2026-05-05 12:16:27 UTC by John-Andreas Borinas