Prozess mit Parametern starten in der PowerShell

Nachdem ich mir schon einmal einen Release Candidate angeschaut hatte, hab‘ ich mir die MS PowerShell 1.0 final installiert. Skripting interessiert mich eh und da wollte ich mal sehen, wie das jetzt im Hause Microsoft aussieht.

In Artikeln über die PowerShell werden immer sehr elegante Aufgaben und deren Lösungen präsentiert, die teilweise wirklich deutlich eleganter sind, als ihre Pendants aus der Unix-Shell-Welt. Wenn alles ein Objekt ist und man Methoden aufrufen bzw. Eigenschaften abfragen kann, kommt einem das schon robuster vor, als wissen zu müssen, die wievielte Spalte in der Ausgabe eines Programms sich als welcher Input für ein weiteres Programm eignet.

Alles viel schöner also? Naja, nicht so ganz… Schnell wollte ich ein Programm aufrufen und diesem ein paar Parameter mitgeben. Da ging die Sucherei dann los.

Runtergebrochen auf ein einfaches Beispiel, das eigentlich so aussehen könnte (in anderen Shells):

assemble –dxgettext Tool.exe

ist die einfachste, funktionierende Variante, die ich bisher gefunden habe, deutlich weniger komfortabel:

$p = new-object System.Diagnostics.Process
$si = new-object System.Diagnostics.ProcessStartInfo
$si.WorkingDirectory = $pwd
$si.UseShellExecute = $false
$si.FileName = (get-command assemble.exe).Definition
$si.Arguments = „–dxgettext Tool.exe“
[diagnostics.process]::Start($si)

Dabei geht es doch nur darum, ein Programm aufzurufen, das keine Ausgabe macht oder Fenster öffnet, sondern nur ein paar Dateien bearbeitet. Und nein, die einfache Zeile von oben funktioniert nicht…

Das ganze kommt mir doch reichlich umständlich vor, zumal man auch gezwungen wird, Methoden zu benutzen, die anscheinend zur Diagnose und nicht zur regulären Anwendung gedacht sind. Dadurch handelt man sich auch eine Ausgabe über die benutzen Resourcen ein, die man eigentlich nicht haben will.

Schade eigentlich…

Advertisements