PSScriptBuilder

Aus vielen Dateien wird ein Skript.

Erstelle einsatzfertige Skripte aus mehrteiligen PowerShell-Projekten — mit automatisch aufgelösten Abhängigkeiten zwischen Aufzählungen, Klassen und Funktionen — garantiert in korrekter Ladereihenfolge.

Loslegen Auf GitHub ansehen PSGallery — Demnächst verfügbar
PowerShell
PS C:\Projects\MyModule>
$cc = New-PSScriptBuilderContentCollector |
    Add-PSScriptBuilderCollector -Type Class `
        -IncludePath "src/Classes" |
    Add-PSScriptBuilderCollector -Type Function `
        -IncludePath "src/Public"

Invoke-PSScriptBuilderBuild `
    -ContentCollector $cc `
    -TemplatePath "build/MyModule.psm1.template" `
    -OutputPath   "build/Output/MyModule.psm1"
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 Aufzählungen, 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, Enumerationen, 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 Enumerationen bereits zur Parse-Zeit verfügbar.

Install-Module -Name PSScriptBuilder

using module PSScriptBuilder
2

Projektstamm festlegen

Teile PSScriptBuilder mit, wo dein Projekt liegt. Alle relativen Pfade werden von diesem Stammverzeichnis aus aufgelöst.

Set-PSScriptBuilderProjectRoot -Path "C:\Projects\MyModule"
3

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"
4

Build ausführen

Starte den Build. PSScriptBuilder sammelt alle Quellen, löst Abhängigkeiten auf, wendet topologische Sortierung an und schreibt die finale 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.