Die ersten Schritte mit PScribo

PScribo von Ian Brighton ist eine Art „PowerShell-Reporting-Tool“, auf welches das Attribut genial auch bei nüchterner Betrachtung zutrifft. Warum? Weil es, genau wie Pester, genau das macht was es machen soll und das mit einer verblüffenden Leichtigkeit. Aktuell steht es nur als Zip-Datei unter GitHub zur Verfügung. Dort hat der Autor aber bereits angekündigt, dass es demnächst auch über die PowerShell Gallery zur Verfügung stehen wird und damit per Install-Module PScribo hinzugefügt werden kann.

Hier ein kleines Beispiel, das ein paar Eckdaten eines AD in einem Report zusammenfasst.

Die Idee ist, dass mit Hilfe der Befehle einer Dokumente-DSL (eine Domänenenspezifische Sprache umfasst Befehle, die im Rahmen einer „Problemdomäne“ zur Lösung von Problemen verwendet werden – dahinter stecken bei der PowerShell in der Regel nur Functions) der Aufbau des Dokuments beschrieben wird. Per Section wird z. B. ein neuer Bereich eingeleitet, per PageBreak ein Seitenumbruch und per Paragraph ein neuer Absatz. Die eigentlichen Daten werden per Table ausgeben, auf Wunsch auch als Liste. Eine weitere Stärke von PScribo ist die Leichtigkeit, mit der sich Tabellen formatieren lassen. Zeilenweise und spaltenweise. Das unscheinbare TOC zu Beginn der Dokumentdefinition fügt ein Inhaltsverzeichnis ein, zu dem automatisch alle Sektionen zusammengefasst werden.

Der Aufruf sieht wie folgt aus:

Das Ergebnis sind jeweils eine Docx- und eine Html-Datei im aktuellen Verzeichnis. Das kleine Beispiel kann natürlich nur einen Teil der Möglichkeiten andeuten. Der Autor stellt im Examples-Unterverzeichnis des Modulverzeichnisses mehrere Dutzend Beispeiele zur Verfügung, die keine Fragen mehr offen lassen sollten. DSL haben Potential. Auf dem DevOps und PowerShell Summit 2016 zeigte PowerShell-Exprte Kirk Munro wie DSLs per PowerShell umgesetzt werden. Das Video sollte es in Kürze auf YouTube geben.

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert.