Führen Sie eine lokale Ausführung durch, indem Sie den Befehl remote aufrufen

2

Mit PowerShell über SSH erfolgreich verwaltet Verknüpfung . Jetzt möchte ich einen Befehl remote vom Linux-Server aus aufrufen, damit die Ausführung lokal auf dem Windows-Server erfolgt.

Zum Beispiel:

Linux-Maschine:

$s = new-PSSession -HostName WinHost -UserName user
Invoke-Command -Session $s -ScriptBlock {C:\scripts\boo.ps1}

Skript boo.ps1 (nur für das Beispiel):

Add-Type -AssemblyName System.Windows.Forms
[System.Windows.Forms.MessageBox]::Show('Hello')

Erwartet:

  • MessageBox wird auf dem Windows-Computerbildschirm angezeigt

Wirklichkeit:

  • Der Versuch, es in der lokalen Linux-Shell auszuführen, schlug natürlich fehl, da es nicht für die Ausführung unter Linux geeignet ist.

Versuchte es mit einem anderen zu betreiben .bat Datei, so wird es aufgerufen .ps1 Skript, gleiches Ergebnis.

igor
quelle
das wird dir sehr weh tun. Ich weiß, dass einige Befehle in einer Remote PowerShell-Sitzung eingeschränkt sind. Abhängig von Ihren Befehlen, die Sie auf dem RemoteSystem ausführen möchten, sind Sie entweder überhaupt nicht in der Lage, sie zu verwenden, oder Sie müssen viele Anpassungen vornehmen, damit dies funktioniert. Eine Messagebox muss beispielsweise im UserInteractive-Modus oder als ServiceNotification oder auf DefaultDesktopOnly ausgeführt werden. Je nachdem, was Sie versuchen, wird es Ihnen viele Kopfschmerzen bereiten. Wenn ich Ihren Befehl genau so ausführe, wie Sie es getan haben, kommt die Fehlermeldung von MessageBox, nicht von der lokalen Shell
SimonS
Abgesehen davon würde ich dieses Problem umgehen, indem ich auf dem RemoteSystem geplante Tasks erstelle, mit denen Ihre Skripts ausgeführt und über ausgelöst werden Invoke-Command oder noch besser über CimSession
SimonS
Ziel ist die Ausführung eines PowerShell-Skripts, das Workflows-Funktionen verwendet, über den Jenkins-Server. Da PScore keine Workflows unterstützt, habe ich die in der Frage beschriebene Problemumgehung durchgeführt.
igor