PoshWizard – eine kleine DSL für das Erstellen von Assistenten

Angeregt durch PScribo und einen Vortrag von Kirk Munro auf dem letzten DevOps und PowerShell Summit habe ich selber eine kleine Domain Specific Language (DSL) mit dem Namen PoshWizard erstellt, mit deren Hilfe sich relativ einfach Assistenten erstellen lassen, die den Anwender durch eine Folge von Eingaben führen und mit den eingegebenen Werten am Schluss eine Aktion ausführen.

Der folgende Text erzeugt einen Assistenten mit insgesamt fünf Fenstern:

Das Ergebnis ist ein WPF-Fenster mit einem TabControl, das für jeden Schritt ein Register enthält (ursprünglich wollte ich alle übrigen Register bis auf das aktuelle ausblenden, aber in dieser Varianten steht eine zusätzliche Navigationsebene zur Verfügung und sie ist vor allem etwas leichter umzusetzen).

Am Ende müssen die eingegebenen Daten lediglich über Variablen angesprochen werden. Im Grunde also ganz einfach.

EIn per PoshWizard angelegtes Fenster

EIn per PoshWizard angelegtes Fenster

Die ganze DSL steht als Modul unter GitHub zur Verfügung:

https://github.com/pemo11/PoshWizard

Ich bin gespannt, ob jemand das Modul einsetzen wird und freue mich natürlich über ein FeedBack. Ob das Modul „produktionsreif“ ist, kann ich im Moment noch nicht beurteilen, da ich es noch nicht ausgiebig getestet habe (es fehlen außerdem noch Tests, die der Autor von PScribo konsequent für jede Function verwendet). Auch die Optik ist sicherlich noch verbesserungswürdig was die Platzierung der einzelnen Bedienelemente angeht. Außerdem fehlt noch die eine oder andere Funktionalität. Ein Beispiel ist ein Wenn-Befehl, durch den eine im letzten Schritt getroffene Auswahl für die Entscheidung verwendet wird welches Fenster als nächstes angezeigt wird. Insgesamt bin ich mit dem Ergebnis aber sehr zufrieden, vor allem angesichts des Umstandes, dass ich aktuell ledlgich ein paar Stunden in die Umsetzung investiert habe. Ich sehe es in erster Linie als ein Beispiel dafür welches Potential in der PoweShell in diesem Bereich steckt.

Schreibe einen Kommentar

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

Diese Website verwendet Akismet, um Spam zu reduzieren. Erfahre mehr darüber, wie deine Kommentardaten verarbeitet werden .