OpenSSH und die PowerShell

Mit der PowerShell und OpenSSH bietet Microsoft inzwischen zwei Tools an, die insbesondere aber nicht nur Linux-Entwicklern und -Administratoren, die Arbeit in Windows-Umgebungen erleichtern können. Mit der offiziellen Portierung von OpenSSH hakt es aber noch an der ein oder anderen Stelle. Das darf einen aber auch nicht wundern, denn offiziell handelt es sich hierbei noch um einen sogenannten Pre-Release.

Spätestens seit letztes Jahr die PowerShell als Open-Source-Software veröffentlicht wurde, erfreut sich diese einer immer größer werdenden Beliebtheit. Die Kommandozeile, die bereits seit Windows 7 fester Bestandteil von Windows ist, eröffnet eine wesentlich einfachere und komfortablere Administration als es mit cmd.exe möglich ist. Dabei verbindet sie das aus Linux bekannte Konzept von Pipes und Filtern mit objektorientierter Programmierung, was den Zugriff auf WMI-Klassen (Windows Management Instrumentation) sowie auf COM-Objekte und das gesamte .NET-Framework. Entwickler, die sich schon einmal mit C# haben herumschlagen dürfen, werden also viel alt bekanntes wiederfinden.

In meiner Arbeit als Wissenschaftliche Hilfskraft in der Informatik der Uni Bonn durfte ich in letzter Zeit einen Systemdienst unter Windows entwickeln. Eine Aufgabe die mich als gewohnten Linux-Nutzer nicht unbedingt übermäßig erfreute. Umso mehr freute ich mich, dass ich beim Aufbau einer Testumgebung inzwischen auf PowerShell und OpenSSH zurückgreifen konnte. Also flix OpenSSH auf der Windows-Maschine installiert und per SSH von meiner Linux-Kiste verbunden. Und das klappt auch wunderbar.

Was nicht so richtig klappt, ist der Zugriff von Linux per SSH auf die PowerShell.

ssh win7@192.168.178.163 'powershell.exe dir'

Der Befehl wird zwar korrekt ausgeführt, leider terminiert das ganze nicht, sodass man erst mit einem Tastendruck auf Enter eine neue Zeile in der Bash bekommt. Das macht die Verwendung ganzer Befehlsketten solcher Art in einem Bash-Skript natürlich unmöglich.

ssh win7@192.168.178.163 'powershell.exe "dir"'
Eigentlich müsste jetzt eine neue Zeile in der Bash erscheinen

Ein Blick in die Prozessliste verriet uns, dass die PowerShell nicht korrekt terminiert. Da half auch kein exit dem Befehl in der PowerShell anzuhängen. Was half, war ein Prozess-Kill.

ssh win7@192.168.178.163 'powershell.exe "& {dir; Stop-Process -Force -Processname PowerShell}"'

Sicher nicht die schönste Lösung, aber in dem konkret vorliegenden Fall ein gangbarer Weg.

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.