PSScriptBuilder

Skripte bauen. Neu gedacht.

Du schreibst den Code. PSScriptBuilder baut das Skript.

PSScriptBuilder analysiert deine Quelldateien und fasst alle Elemente zu einem Skript zusammen — Klassen, Funktionen und Aufzählungen in der Reihenfolge, in der sie benötigt werden.

Kein manuelles Sortieren. Keine rätselhaften Ladefehler. Nur noch delegieren.

In PowerShell geschrieben — baut sich selbst

PowerShell
PS C:\Projects\MyModule>
$contentCollector = New-PSScriptBuilderContentCollector |
    Add-PSScriptBuilderCollector -Type Class -IncludePath "src/Classes" |
    Add-PSScriptBuilderCollector -Type Function -IncludePath "src/Public"

Invoke-PSScriptBuilderBuild `
    -ContentCollector $contentCollector `
    -TemplatePath "build/MyModule.psm1.template" `
    -OutputPath   "build/Output/MyModule.psm1"
Collected 54 classes, 3 enums, 24 functions Graph 78 nodes connected by 179 edges Cycles None detected Sorted 78 components Written 539,659 characters Build completed ✓
PS 5.1 kompatibel
Dependency Resolution
Topologische Sortierung
Template-System
Release-Verwaltung
Build-Validierung

Warum PSScriptBuilder?

Alles, was du brauchst, um aus einem mehrteiligen Projekt ein einsatzfertiges Skript zu erstellen

Dependency Resolution

Analysiert automatisch Abhängigkeiten zwischen Enums, Klassen und Funktionen mithilfe von PowerShell-AST-Parsing. Erkennt Zyklen frühzeitig und liefert klare Fehlermeldungen, bevor der Build scheitert.

Topologische Sortierung

Garantiert die korrekte Ladereihenfolge mit einem bewährten topologischen Sortieralgorithmus. Basisklassen werden immer vor abgeleiteten Klassen geladen — unabhängig von der Dateireihenfolge.

Flexible Templates

Definiere die Ausgabestruktur einmalig mit einem Template und frei definierbaren Tokens. PSScriptBuilder ersetzt die Tokens durch korrekt geordneten, aufgelösten Inhalt — volle Kontrolle über das finale Skript-Layout.

Spezialisierte Collectors

Dedizierte Collectors für Klassen, Funktionen, Enums, Using-Statements und einzelne Dateien. Jeder Collector ist unabhängig konfigurierbar mit eigenen Pfaden, Dateifiltern und Collection-Keys.

Release-Verwaltung

Integrierte SemVer-Versionierung (Major/Minor/Patch), automatische Dateiaktualisierungen im gesamten Projekt, fortlaufende Build-Nummer und Git-Metadaten für jedes Release.

Build-Validierung

Erkennt Konfigurationsfehler noch vor dem Build-Start. Validiert Template-Syntax, Vollständigkeit der Platzhalter und Collector-Konfiguration — und protokolliert jeden Schritt mit vollständiger Verbose-Unterstützung.

Schnellstart

In wenigen Minuten einsatzbereit

1

Modul installieren und importieren

Installiere PSScriptBuilder aus der PowerShell Gallery. Verwende using module in deinem Build-Skript — damit werden PowerShell-Klassen und Enums bereits zur Parse-Zeit verfügbar.

Install-Module -Name PSScriptBuilder
using module PSScriptBuilder
2

Collectors konfigurieren

Erstelle einen Content-Collector und füge spezialisierte Collectors für jeden Quelltyp hinzu. Die Pipeline-Syntax hält die Konfiguration lesbar und kombinierbar.

$contentCollector = New-PSScriptBuilderContentCollector |
    Add-PSScriptBuilderCollector -Type Class    -IncludePath "src/Classes" |
    Add-PSScriptBuilderCollector -Type Function -IncludePath "src/Public"
3

Build ausführen

Führe den Build aus. PSScriptBuilder sammelt alle Quelldateien, löst Abhängigkeiten auf und schreibt die fertige Ausgabedatei anhand des Templates.

Invoke-PSScriptBuilderBuild `
    -ContentCollector $contentCollector `
    -TemplatePath "build/MyModule.psm1.template" `
    -OutputPath   "build/Output/MyModule.psm1"

Typischer Workflow

So fügt sich PSScriptBuilder in deine PowerShell-Entwicklungspipeline ein

1
Entwickeln
Dein Editor
2
Build
PSScriptBuilder
3
Testen
Pester
4
Veröffentlichen
Publish-Module
Fokussiert auf Script-Building — passt hervorragend zu psake oder InvokeBuild.

Use Cases

Kommt dir das bekannt vor? PSScriptBuilder wurde genau dafür entwickelt.

Eigenständige Skripte

Du schreibst saubere, strukturierte Quelldateien — für den Einsatz brauchst du aber ein einzelnes Skript. Einmalig konfigurieren, dann mit einem einzigen Befehl bauen. Alle Abhängigkeiten aufgelöst, korrekte Reihenfolge garantiert.

Objektorientiertes PowerShell

Deine Klassenhierarchie wächst und die Ladereihenfolge bereitet immer wieder Probleme. PSScriptBuilder nutzt PowerShells AST, um jede Abhängigkeit automatisch aufzulösen — kein manuelles Sortieren, kein Rätselraten mehr.

Strukturierte Releases

Versionen vor jedem Release in mehreren Dateien anzupassen ist mühsam und fehleranfällig. Definiere die Ausgabestruktur einmalig mit einem Template und lass PSScriptBuilder die Versionserhöhung, Dateiaktualisierungen und Git-Metadaten automatisch verwalten.

CI/CD-Pipelines

Automatisiere den PowerShell-Build als Teil einer beliebigen CI/CD-Pipeline. PSScriptBuilder liefert bei jedem Durchlauf ein deterministisches Ergebnis mit korrekt aufgelösten Abhängigkeiten — keine manuellen Schritte, keine Überraschungen.

Häufige Fragen

Antworten auf die wichtigsten Fragen zu PSScriptBuilder

Ja. PSScriptBuilder ist vollständig kompatibel mit PowerShell 5.1 und PowerShell 7+. Die erstellten Skripte zielen auf PS 5.1 als kleinsten gemeinsamen Nenner ab, aber das Build-Tooling selbst läuft auf beiden Versionen.

psake und Invoke-Build sind allgemeine Task-Runner — sie orchestrieren die gesamte Build-Pipeline. PSScriptBuilder löst ein spezifisches Problem: ein mehrteiliges PowerShell-Projekt in ein einzelnes, korrekt geordnetes Skript zusammenzuführen. Sie ergänzen sich gut — Invoke-Build für die Pipeline, PSScriptBuilder als einen Schritt darin.

PSScriptBuilder erkennt zirkuläre Abhängigkeiten in der Analysephase — bevor eine Ausgabe geschrieben wird. PSScriptBuilder gibt einen klaren Fehler mit dem betroffenen Zyklus aus, damit du ihn im Quellcode beheben kannst. Der Build schlägt frühzeitig fehl, anstatt stillschweigend ein fehlerhaftes Skript zu erzeugen.

Nein. Für jeden Collector gibst du ein oder mehrere Quellverzeichnisse an — er erkennt alle passenden Dateien darin automatisch. Dateifilter und Rekursionstiefe sind optional konfigurierbar, aber du musst keine einzelnen Dateien auflisten. Neue Dateien in den konfigurierten Ordnern werden beim nächsten Build automatisch einbezogen.

Absolut. PSScriptBuilder erzeugt deterministischen Output — dieselben Eingaben liefern immer dasselbe Skript. Es gibt keine interaktiven Abfragen und die gesamte Konfiguration erfolgt per Code. Es läuft auf jedem Windows-Agent mit PowerShell 5.1+ und hat keine weiteren Abhängigkeiten außer dem Modul selbst.

Ja. PSScriptBuilder ist vollständig in PowerShell geschrieben und baut sich selbst. Das Modul verwaltet über 80 Quelldateien mit komplexen Klassenabhängigkeiten und löst die korrekte Build-Reihenfolge automatisch auf — mit denselben Cmdlets und Mechanismen, die du in deinen eigenen Projekten einsetzen kannst.