KI und Ich

Ein Blog über KI, Auswirkungen und Experimente von Karlheinz Agsteiner

Mein (erfolgloser) Kampf mit der Windows Powershell

Admin Klaus

Für meine kleinen Apps habe ich bei hostinger einen VPS lizensiert. Nette Sache, kann viele node.js Programme laufen lassen. Problem ist nur: das Ding läuft auf ubuntu, und meine Unix-Admin-Tage sind 30 Jahre her. Ich kann die meisten Unix-Kommandos noch gut lesen und verstehen, habe aber weder Zeit noch Lust, mir die Details wieder beizubringen und mich auf den neusten Stand etwa bzgl. UFW oder PM2 zu bringen.

Also musste "Admin Klaus" her - eine ssh Shell, mit der man in natürlicher Sprache redet, und die dann ein LLM beauftragt, einen Plan zu machen, welche Unix Kommandos nötig sind, um meinen Wunsch zu erfüllen, und die den dann ausführt. In Anlehnung an das klassische "Gabelstaplerfahrer Klaus" Youtube-Video, das als Sicherheitsbelehrung für das Fahren von Gabelstaplern beginnt, und als Splatterorgie endet, musste meine LLM-Unix-Admin-Shell Klaus heissen. Obwohl ich aufgepasst habe und Klaus mir immer das auszuführende Kommando zur Bestätigung gibt und dann auch genau dieses Kommando ausführt.

Und Powershell Fritz

Das funktioniert so gut, dass ich enthusiastisch das gleiche wollte, um meinen heimischen PC zu verwalten. Anders als UNIX Kommandos sagt mir nämlich die Powershell sehr wenig. Also eine kleine Spezifikation geschrieben, was eine natürlichsprachliche Schnittstelle oben auf der Powershell können soll und Cursor + Claude Opus 4.5 legten los und bauten die für mich. Und wie auch schon Klaus läuft die Shell fast auf Anhieb.

Und scheitert an fast allem kläglich. Meine zwei Use Cases waren:

  1. gehe in ein Schwesterverzeichnis und gib mir die Anzahl von Zeilen Javascript + HTML Code aus, rekursiv in Unterverzeichnisse, die gängigen Dependency-Verzeichnisse ignorierend (also etwa node_modules).

  2. In einem bestimmten Bild ersetze das Aufnahmedatum in den EXIF durch ein anderes.

Und so lief's:

Aufgabe 1 gelingt zufällt mal, mal nicht. Mal sagt die Shell mir "0 Zeilen!", mal sagt sie mir "140000 Zeilen". Korrekt wäre etwas um die 3000. Die App erzeugt immer die schönsten schwer verständlichen Powershell-Skripte, führt sie aus, gibt ein falsches Ergebnis zurück.

Aufgabe 2 gelingt überhaupt nie trotz enthusiastischer Erfolgsmeldung der App. Immer behauptet die App "alles ausgeführt, tut". Und das EXIF-Datum bleibt stur, wie es ist.

Hab dann alles mögliche probiert: optionale Verwendung der Powershell 7, GIMP Verwendung (GIMP Skripte der AI funktionieren NIE), keine GIMP Verwendung, EXIF-Tool Verwendung. Es half alles nichts.

Und Powershell Fred

Also: erkennen, dass es wirklich Millionen Zeilen Code braucht, um ein LLM gut zu trainieren, und dass diese Zeilen zwar für Python und Unix-Scripting verfügbar sind, aber nicht für die Powershell.

Powershell Fred führt jetzt direkt Powershell-Kommandos für einfache Dinge wie "cd" aus. Falls er etwas komplizierteres will, schreibt die AI ein Python-Skript (und kennt einige gängige Libraries wie Pillow, piexif, openpyxl). Natürlich wieder mit "User muss Ausführung des Skripts abnicken".

Und voila! Beide Aufgaben löst Fred auf Anhieb.

Die Moral von der Geschicht

Ich hätte natürlich nachschauen können, ob OpenAI oder Google ihre LLMs besser für Powershell trainiert haben, aber warum sich mühen. Generell fragt man sich dann schon, welche Zukunft solches Shell-Scripting heute hat, wo man sich für Kleinigkeiten wie "benenne alle JPGs in diesem Folder so um, dass das Aufnahmedatum der Name ist" oder "Erzeuge ein Excel mit allen Dateien in diesem Ordner + Größe" oder ... fast ohne Mühe ein Skript schreiben lassen kann.