wake-up-neo.com

Wie führe ich ein Powershell-Skript aus, das auf einem Remote-Computer verfügbar ist?

Ich habe versucht, ein Skript auf einem entfernten Computer auszuführen. 

Ich habe "Enable-PSremoting" in der Remote-Maschine gemacht.

Ich habe ein Skript hello.ps1 in die entfernte Maschine gestellt.

[Mein Client-Computer ist Windows XP und der Remote-Computer ist Windows 2003.]

Dann versuchte ich von meinem Client-Computer aus, das Skript auszuführen.

invoke-command -computer $MachineName -filepath "C:\hello.ps1"

Ich habe den folgenden Fehler erhalten.

Invoke-Command: Kann Pfad 'C:\hello.ps1' nicht finden, da er nicht existieren.

Ich denke, es versucht, ein Skript vom Client-Rechner zu finden. 

Wenn ich versuche zu rennen 

invoke-command -computer $MachineName -command { C:\hello.ps1 }, Er führt das Skript aus, das auf der Remote-Maschine auf der Clientseite verfügbar ist.

Ich möchte jedoch das Remote-Skript in der Remote-Maschine selbst ausführen.

Wie kann ich das Skript auf einem Remote-Computer ausführen?

Aktualisierte: 

Tatsächlich funktioniert dieser Befehl "invoke-command -computer $MachineName -command { C:\hello.ps1 }" auf der entfernten Seite und gibt das Ergebnis an die Clientseite zurück. Ich habe es missverstanden, als ich die Rückgabewerte sah, die auf Clientseite ausgeführt werden.

22
Samselvaprabu

Wenn du schreibst:

invoke-command -computer $MachineName -filepath "C:\hello.ps1"

Das Skript C:\hello.ps1 wird vom Client-Computer abgerufen und zur Ausführung auf den Server gebracht. Sie haben also den Fehler Datei existiert nicht , weil Invoke-Command die Datei auf dem Client-Computer sucht.

12
JPBlanc
1
David Brabant

Ich hatte genau dieselbe Sonde und löste sie mit einer Kombination aus [WMICLASS] 's create() und Start-Process

Überprüfen Sie meine Antwort hier .

0
Ocelot

Ich habe den gleichen Fehler erhalten, aber ich habe eine Remote-Sitzung in einer Variablen in Ihrem Code angehängt und habe schließlich etwas, das funktioniert:

$s = New-PSSession -ComputerName "WTxxxxxL32" -Credential $credential

Invoke-Command -Session $s -Command {D:\ServerDLLDev\RemoteCOMInstall.ps1}

Es gibt eine Million Invoke-etc-Lösungen, aber die einfachste hat für mich schlussendlich funktioniert. Danke dir.

0
JustJohn