Manifest (.psd1)

Was ist ein Manifest?

Ein Manifest (.psd1) beschreibt ein PowerShell-Modul.

Während die eigentliche Programmlogik in einer .psm1-Datei liegt, enthält das Manifest Informationen über das Modul selbst.

Dazu gehören beispielsweise

Das Manifest enthält keinen ausführbaren Programmcode. Es dient ausschließlich als Beschreibung und Konfiguration eines Moduls.


Allgemein

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

@{
    RootModule        = "TestModul.psm1"
    ModuleVersion     = "1.7.0"
    GUID              = "ege0799e-734e-451d-9bb1-34983dd82f05"
    Author            = "ProgramMaster"
    CompanyName       = "Microsoft"
    Copyright         = "Microsoft i guess"
    Description       = "Ich beschreibe wundervoll, was das für ein Modul es ist"
}
RootModule

Hauptdatei (.psm1 oder .dll)

ModuleVersion

Version (z. B. 1.0.0)

GUID

Eindeutige ID

Author

Ersteller/Entwickler des Moduls

CompanyName

Unternehmen

Urheberrechte

Description

Beschreibung des Moduls


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 #7
Created 2026-04-12 21:28:06 UTC by John-Andreas Borinas
Updated 2026-08-13 11:28:08 UTC by John-Andreas Borinas