
37414
Jan 11, 2017, updated at 11:09:54 (UTC)
Batchdatei auf einem Server ausführen mit psexec.exe
Ich möchte gerne eine Batchdatei auf einem Server ausführen.
Ich habe Adminrechte auf dem Server und kann z.B. auch über die folgende Eingabe im Explorer von meinem Rechner aus auf den Desktop des Servers zugreifen:
\\server1\C$\Users\administrator.ABC\Desktop\
Testweise habe ich auf den Server-Desktop 2 Dateien gelegt
1) test.bat
2) test.txt
Die Datei "test.bat" soll die Datei "test.txt" öffnen.
Das funktioniert auch, wenn ich dies direkt auf dem Server-Desktop ausführe.
Leider funktioniert es nicht, diese Batchdatei (test.bat) von meinem Rechner aus zu starten, obwohl im CMD-Fenster folgendes ausgegeben wird:
C:\Users\administrator.ABC\Desktop\test.bat started on server1 with process ID 10596
Schaue ich danach remote auf den "server1", dann wurde die Datei "test.txt" nicht geöffnet.
Hier der Inhalt meiner Batchdatei, die ich von meinem Rechner aus starte:
Wie Ihr seht, habe ich schon verschiedene Möglichkeiten versucht (mir REM davor)... mit Benutzername und Kennwort, mit und ohne Anführungsstriche sowie mit und ohne Angabe "-d -i -s"
Das Ergebnis ist immer gleich. Angeblich wurde der Prozess gestartet, aber wenn ich dann die Remoteverbindung zum Server aus der Taskleiste nach vorne hole, wurde die Textdatei (test.txt) nicht gestartet.
Hat jemand von Euch eine Idee, was ich falsch mache?
Danke und Gruss,
imebro
Ich habe Adminrechte auf dem Server und kann z.B. auch über die folgende Eingabe im Explorer von meinem Rechner aus auf den Desktop des Servers zugreifen:
\\server1\C$\Users\administrator.ABC\Desktop\
Testweise habe ich auf den Server-Desktop 2 Dateien gelegt
1) test.bat
2) test.txt
Die Datei "test.bat" soll die Datei "test.txt" öffnen.
Das funktioniert auch, wenn ich dies direkt auf dem Server-Desktop ausführe.
Leider funktioniert es nicht, diese Batchdatei (test.bat) von meinem Rechner aus zu starten, obwohl im CMD-Fenster folgendes ausgegeben wird:
C:\Users\administrator.ABC\Desktop\test.bat started on server1 with process ID 10596
Schaue ich danach remote auf den "server1", dann wurde die Datei "test.txt" nicht geöffnet.
Hier der Inhalt meiner Batchdatei, die ich von meinem Rechner aus starte:
@echo off & setlocal
REM psexec \\server1\ -u benutzername -p kennwort "C:\Users\administrator.ABC\Desktop\test.bat"
REM psexec.exe -d -i -s \\server1\ -u benutzername -p kennwort "C:\Users\administrator.ABC\Desktop\test.bat"
psexec.exe -d -i -s \\server1\ C:\Users\administrator.ABC\Desktop\test.bat
pause
Wie Ihr seht, habe ich schon verschiedene Möglichkeiten versucht (mir REM davor)... mit Benutzername und Kennwort, mit und ohne Anführungsstriche sowie mit und ohne Angabe "-d -i -s"
Das Ergebnis ist immer gleich. Angeblich wurde der Prozess gestartet, aber wenn ich dann die Remoteverbindung zum Server aus der Taskleiste nach vorne hole, wurde die Textdatei (test.txt) nicht gestartet.
Hat jemand von Euch eine Idee, was ich falsch mache?
Danke und Gruss,
imebro
Please also mark the comments that contributed to the solution of the article
Content-ID: 326059
Url: https://administrator.de/forum/batchdatei-auf-einem-server-ausfuehren-mit-psexec-exe-326059.html
Printed on: May 12, 2025 at 06:05 o'clock
18 Comments
Latest comment

psexec.exe \\server1 -d -i -u Administrator -p kennwort cmd /c "C:\Users\administrator.ABC\Desktop\test.bat"
Außerdem, wenn es schon eine Session mit dem in psexec angegebenen User auf dem Server gibt (z.B. eine RDP-Session) wird die Textdatei interaktiv in dieser Session angezeigt und nicht in der Console-Session. Schaue also in den Taskmanager auf dem Server in den Details dann siehst du unter welchem Account die Textdatei geöffnet wurde.
Gruß mik

Zitat von @37414:
im Server-Taskmanager finde ich überhaupt keinen Hinweis darauf, dass die Textdatei mal geöffnet wurde.
"Wurde" auch nicht aber du solltest zumindest einen "notepad" Prozess sehen wenn du die Prozesse aller User einblendest, ansonsten machst du einen grundlegenden Fehler in deiner Batchdatei.im Server-Taskmanager finde ich überhaupt keinen Hinweis darauf, dass die Textdatei mal geöffnet wurde.
Starte mal nicht die Batch sondern einfach mal nur notepad direkt.
psexec.exe \\server1 -d -i -u Administrator -p kennwort notepad

Zitat von @37414:
ja, ich sehe 4 Mal den notepad-Eintrag.
Habe jetzt auch mal nur "notepad" aufgerufen, wie von Dir gepostet.
Gut also hat das geklappt, jetzt wurden sie nur im falschen Kontext gestartet und nicht in der Console-Session.ja, ich sehe 4 Mal den notepad-Eintrag.
Habe jetzt auch mal nur "notepad" aufgerufen, wie von Dir gepostet.
Beachte: Wenn du dich per Remote anmeldest bist du nicht auf der Console-Session! Es muss schon eine Session mit dem Benutzer existieren bevor du psexec startest.
Allerdings findet sich in "Details" keine Datumsangabe, wann der Prozess gestartet wurde.
Bei allen 4 sehe ich jedoch im Reiter "Allgemein" jeweils den Eintrag "12. August 2015" bei ERSTELLT und LETZTER ZUGRIFF.
Interessant ist eher die Spalte wem der Prozess gehört und die Sitzungskennung! Die Spalten kannst du dir zusätzlich einblenden lassen.Bei allen 4 sehe ich jedoch im Reiter "Allgemein" jeweils den Eintrag "12. August 2015" bei ERSTELLT und LETZTER ZUGRIFF.
Tu uns doch bitte den Gefallen und erzähle uns mehr über deine Umgebung OS etc.
Für mich bei dir alles Verständnisprobleme wie psexec arbeitet.
Also bei mir gehts:
auf der lokalen Maschine cmd.exe öffnen:
Psexec.exe \\<Hostname> -u <full qualified Domainname\UserName> -p <Password> cmd
Auf der RemoteMaschine werden nun 2 Processe ausgeführt: die CMD und PSEXECSVC. Natürlich nicht sichtbar, weil sie in einem anderen Benutzer- Kontext laufen. Das tut dem ganzen aber keinen Abbruch und soll eigentlich so sein.
Nun kannst du in deiner lokalen CMD alle Befehle angeben. Diese werden auf der Remote-Maschine ausgeführt. Z.B.
notepad.exe
oder:
md c:\newFolder
rd c:\newfolder
KA warum das bei dir nicht geht. Alternativ kannst du auch die IP des Remote-Rechners angeben.
auf der lokalen Maschine cmd.exe öffnen:
Psexec.exe \\<Hostname> -u <full qualified Domainname\UserName> -p <Password> cmd
Auf der RemoteMaschine werden nun 2 Processe ausgeführt: die CMD und PSEXECSVC. Natürlich nicht sichtbar, weil sie in einem anderen Benutzer- Kontext laufen. Das tut dem ganzen aber keinen Abbruch und soll eigentlich so sein.
Nun kannst du in deiner lokalen CMD alle Befehle angeben. Diese werden auf der Remote-Maschine ausgeführt. Z.B.
notepad.exe
oder:
md c:\newFolder
rd c:\newfolder
KA warum das bei dir nicht geht. Alternativ kannst du auch die IP des Remote-Rechners angeben.

cmd exited on ABC with error code 0
Das ist keine Fehlermeldung das ist die normale Ausgabe wenn ein Programm/Skript erfolgreich per PSEXEC ausgeführt wurde! Die Ausgabe des Skripts siehst du lokal nicht. Auf dem Remoterechner wird es wie gesagt unsichtbar im Hintergrund ausgeführt wenn es nicht interaktiv starten soll, aber das scheinst du ja noch nicht so richtig zu kapieren.
Offenbar ist es also nicht möglich, von meinem lokalen Rechner aus auf dem Remote-Server eine Batch zu starten, die dann dort automatisch ausgeführt wird.
Quark,natürlich geht das, aber deine Kiste/Server scheint verbastelt zu sein oder der Dienst/was auch immer nicht geeignet zu sein, denn hier geht das wie gesagt einwandfrei.
lediglich ein Dienst gestartet.
Schon mal was von sc oder Powershell oder Taskplaner gehört?https://www.raymond.cc/blog/remotely-start-and-stop-applications-or-serv ...
Auch das sollte sich so lösen lassen. Du musst nur sicherstellen, dass du die Bat mit einem Benutzer ausführst der auf der Remote-Maschine Adminrechte hat.
das geht nicht?
net stop <service>
net start <service>
mit sc kannst nachschauen wie der status des Service ist
Wir legen ein Set von Tools in einem Ordner unter C:\ ab. So kann jeder problemlos darauf zugreifen der die Entsprechenden Berechtigungen hat.
das geht nicht?
net stop <service>
net start <service>
mit sc kannst nachschauen wie der status des Service ist
Wir legen ein Set von Tools in einem Ordner unter C:\ ab. So kann jeder problemlos darauf zugreifen der die Entsprechenden Berechtigungen hat.