2012-05-04 6 views
17

Ich habe versucht, ein Skript im Remote-Computer auszuführen.Wie führe ich ein Powershell-Skript aus, das auf einem entfernten Rechner verfügbar ist?

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

Ich legte ein Skript hello.ps1 in Remote-Maschine.

[My Client-Rechner ist Windows XP und Remote-Computer ist Windows 2003]

Dann von meinem Client-Computer ich habe versucht das Skript auszuführen.

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

Ich habe den folgenden Fehler erhalten.

Invoke-Befehl: Der Pfad 'C: \ hello.ps1' kann nicht gefunden werden, da nicht existiert.

Ich denke, es versucht, Skript von Client-Maschine zu finden.

Wenn ich versuche,

invoke-command -computer $MachineName -command { C:\hello.ps1 } zu laufen, es führt das Skript in Remote-Computer in Client-Seite.

Aber ich möchte das Remote-Skript in Remote-Maschine selbst ausführen.

Wie wird es gemacht, um das Skript in Remote-Maschine verfügbar zu machen?

Aktualisiert:

Eigentlich dieser Befehl "invoke-command -computer $MachineName -command { C:\hello.ps1 }" funktioniert in Remote-Seite und das Ergebnis auf Client-Seite zurückgegeben. Ich missverstanden, indem ich die Rückgabewerte, die es auf der Clientseite ausführt, sehe.

+0

Ich liebe dich. 5 Jahre nachdem dein Thread gepostet wurde, nach Tagen und Tagen des Googelns und Überfließens und dem Versuch, jede Konfiguration von Invoke-yadayada fast fertig zu machen und ich sehe deinen "Update:" Abschnitt oben und versuche genau das.Es gab mir den gleichen Fehler, aber ich hakte eine Remote-Sitzung in einer Variablen in Ihrem Code und schließlich etwas, das funktioniert: :::::::: $ s = New-PSSession -ComputerName "WTxxxxxL32" -Credential $ credential :: ::: Invoke-Befehl -Session $ s -Kommando {D: \ ServerDLLDev \ RemoteCOMInstall.ps1} – JustJohn

Antwort

1

Siehe hier für eine quick start on PowerShell remoting.

+0

Es hat grundlegende Erklärung über Remoting. Ich habe diese grundlegenden Dinge bereits ausprobiert. Aber das Ausführen des Skripts auf der Remote-Seite hat Probleme – Samselvaprabu

+0

@Samselvaprabu Wie hast du die Datei/das Skript ausgeführt, das auf dem Remote-Rechner über lokales Skript gehostet wird? – Abdul

9

Wenn Sie schreiben:

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

Das Skript C:\hello.ps1 wird vom Client-Computer und brachte an den Server genommen werden ausgeführt werden. Sie haben also den Fehler Datei existiert nicht, weil Invoke-Command nach der Datei im Clientcomputer sucht.

+0

Wie wäre es, dem Remote-Skript Parameter zu geben? –

+2

werfen Sie einen Blick auf '-ArgumentList'. – JPBlanc

+0

@JPBlanc Ich habe Schwierigkeiten herauszufinden, wie man '-ArgumentList' Option verwendet, um die Remote-Datei auf dem Remote-Rechner angegeben – Abdul

0

Ich hatte die exakt gleiche Sonde, und löste es mit einer Kombination von [WMICLASS] 's create() und Start-Process.

Überprüfen Sie meine Antwort here.

0

habe ich den gleichen Fehler, aber ich süchtig Code eine Remote-Sitzung in einer Variablen in und 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 solutons aber die einfachste arbeitete schließlich für mich . Danke dir.

+0

Das bedeutet, dass Sie den Powershell-Befehl auf Ihrer VM von Ihrem lokalen Rechner ausführen. – ChanGan

+0

Keine VM beteiligt. Clientcomputer und Server Die New-PSSession erstellt eine Sitzung zum Ausführen von Code auf dem Remote-Server. Invoke-Command für die Sitzung führt dann das Skript aus, das sich auf dem Server befindet. Vorher hatte ich den Code auf dem Client, aber das erzeugte einen Fehler. – JustJohn

+0

Mein Server befindet sich in einer anderen Domäne. Diese Lösung wird funktionieren? – ChanGan