2009-11-23 12 views
5

Ich habe PS 1.0 auf einem Remote-PC (RPC001) installiert. Ich verwenden Windows Sysinternals tool PSExec.exe den folgenden Prozess auf der Fernbedienung ausführen:Run PowerShell-Skripte auf Remote-PC

PSExec \\RPC001 -u myID -p myPWD PowerShell C:\script\StartPS.ps1 par1 par2 

kann ich der PowerShell.exe Prozess auf dem Remote-PC sehen zu laufen hinterher, aber es ist eigentlich nichts zu tun, nur dort hängen. Ich habe versucht, einen einfachen Code von "Write-Output/Host" eine Zeichenfolge in das Skript zu schreiben. Ich benutze das gleiche Skript auf der Fernbedienung von RTS, es funktioniert dort.

Nicht sicher, ob ich etwas anderes vermisse, um das Skript mit PSExec auszuführen, oder es ist PSExec.exe Einschränkung. Ich möchte ein PS-Skript auf Remote starten, um dort etwas lokal zu tun (einige Dateien lokal komprimieren und alte Dateien entfernen) aus meiner Box.

Ich fragte eine ähnliche Frage in Stackoverflow: Run remote process by powershell. Don schlug mir vor, PSExec zu verwenden. Es klingt nach einer alternativen Möglichkeit, das Problem zu lösen. Ich kann jedoch nicht mit PowerShell arbeiten. Gibt es eine Möglichkeit PS auf einem entfernten PC zu installieren?

Übrigens kann ich PS 2.0 nicht verwenden, da mein Netzwerk es mir nicht erlaubt, Windows XP SP3 zu installieren, das für PS 2.0 erforderlich ist.

Antwort

6

Nach weiteren Untersuchungen auf PSExec-Tool, ich denke, ich habe die Antwort bekommen. Ich brauche -i Option hinzufügen PSExec sagen Prozess auf Remote im interaktiven Modus zu starten:

PSExec \\RPC001 -i -u myID -p myPWD PowerShell C:\script\StartPS.ps1 par1 par2 

Ohne -i, powershell.exe auf der Fernbedienung läuft Modus in warten. Interessanter Punkt ist, dass, wenn ich eine einfache Fledermaus (ohne PS in Fledermaus) laufen, es gut funktioniert. Vielleicht ist das etwas Besonderes für PS-Fall? Willkommen Kommentare und Erklärungen.

+0

Wie ich für diese Verwendung PSExec 'Start-Prozess erreichen kann". wusa.exe "-ArgumentList" $ W2K12/quiet "-Wait" – Dotnet

2

Können Sie Folgendes versuchen?

psexec \\server cmd /c "echo . | powershell script.ps1" 
+0

Ich denke, Sie fehlen den gesamten Pfad C: \ script \ StartPS.ps1 – toxicate20

5

Die akzeptierte Antwort für mich nicht funktioniert hat, aber die folgenden haben:

>PsExec.exe \\<SERVER FQDN> -u <DOMAIN\USER> -p <PASSWORD> /accepteula cmd 
    /c "powershell -noninteractive -command gci c:\" 

Beispiel von here

+0

Gleiches Problem ... akzeptiert lief und Fehlercode 0 zurückgegeben, aber tat nichts, während Ihre Lösung funktioniert – SteveC

+1

Ich habe "Powershell -interaktive-Datei C: \ temp \ scripts.ps1", die für mich funktioniert (akzeptierte Antwort nicht). – kafka

+0

@kafka Wo ist Ihre scripts.ps1 befindet? Ich versuche, eine zu bekommen Skript läuft aus, aber ohne Erfolg – null

0

akzeptierte Antwort für mich nicht funktioniert, aber dies tut. Stellen Sie sicher, Skript in der Lage (c. \ Temp_ unten auf jedem Remote-Server servers.txt eine Liste von IP-Adressen enthält (eine pro Zeile)

psexec @servers.txt -u <username> cmd /c "powershell -noninteractive -file C:\temp\script.ps1"