Wie führe ich ein PowerShell-Skript in einer Cygwin SSH-Sitzung aus?

11

Ich habe Windows Server 2003 mit CopSSH installiert (Cygwin + sshd). W möchte in der Lage sein, ein PowerShell-Skript über den SSH-Sitzungsbefehl auszuführen und dann dessen Ausgabe zu verwenden. Gibt es eine solche Fähigkeit? Wie es geht ?

malloc4k
quelle

Antworten:

11

Rufen powershellSie einfach die entsprechenden Argumente auf und leiten Sie sie an die gewünschte Stelle weiter. Sie müssen sicherstellen, dass es in der PATHnatürlich ist.

ak2
quelle
Vielen Dank. Ich dachte nicht, dass es so einfach ist.
Malloc4k
14
Es ist nicht so einfach. PowerShell verwendet die Konsolen-API. Cygwin (in den Händen erfahrener Benutzer) wird nicht in der Konsole ausgeführt, sondern in einem Terminalemulator. PowerShell funktioniert nicht in einem Terminal. Es hängt, weil versucht wird, ReadConsoleInput anstelle von ReadFile für die Standardeingabe zu verwenden.
Barry Kelly
6

Als erstes ist es gut, den ausführbaren Pfad von PowerShell zur Umgebungsvariablen PATH des Benutzers hinzuzufügen. Wir tun dies, indem wir der .bashrc-Dateizeile des Benutzers Folgendes hinzufügen:

export PATH=${PATH}:"/cygdrive/c/WINDOWS/system32/WindowsPowerShell/v1.0"

Dann können wir das PowerShell-Skript ausführen, indem wir einfach unsere SSH-Sitzung eingeben

powershell.exe -File "c:\u.ps1"

Natürlich können wir es jetzt weiterleiten, um seine Ausgabe zu verwenden.

Ich frage mich nur, warum ich in meiner SSH-Sitzung zweimal die Eingabetaste drücken muss, nachdem ich den Befehl eingegeben habe, damit er funktioniert.

malloc4k
quelle
4
Um zu vermeiden, dass Sie die echo "\n" | powershell.exe ...
Andrew
4

Versuchen Sie es ohne Eingabeformat

powershell.exe -inputformat none -noprofile echo hello

Kann nützlich sein, wenn Sie keine Datei an den lokalen Computer senden müssen.

Patrick Walker
quelle