ErrorCode von PSExec beziehen
Hallo zusammen,
Ich habe da ein Problem mit PSExec, das vermutlich so simpel zu lösen ist, dass ich mich anschließend wahrscheinlich schäme es hier eingestellt zu haben. Aber ein Versuch ist es allemal wert.
Also:
Ich möchte mittels PSExec aus einer Server-Batch heraus eine auf den einzelnen Clients lokal vorhandene Batchdatei ausführen. Diese Batchdatei gibt je nach Ablauf einen bestimmten ExitCode zurück, auf den ich dann ich dann in der Server-Batch entsprechend reagieren möchte.
Nun gibt PSExec zwar den Rückkehrcode der ausgeführten Batchdatei als Nachricht aus, aber wie kann ich diesen Rückkehrcode nun weiterverarbeiten? Da PSExec korrekt ausgeführt wurde habe ich im weiteren Verlauf der Serverbatch als Errorlevel lediglich "0", nicht aber den Rückkehrcode der ausgeführten Batch-datei.
Beispiel zur Verdeutlichung des Problems:
Wenn ich folgendes versuche
Dann bekomme ich als ERRORLEVEL immer "0" angezeigt, obwohl die localbatch.bat laut psexec-Meldung einen Rückkehrcode "5" hatte.
Wie komme ich für die weiteren Befehle innerhalb der Serverbatch jetzt an eben diesen Rückkehrcode?
Ich habe da ein Problem mit PSExec, das vermutlich so simpel zu lösen ist, dass ich mich anschließend wahrscheinlich schäme es hier eingestellt zu haben. Aber ein Versuch ist es allemal wert.
Also:
Ich möchte mittels PSExec aus einer Server-Batch heraus eine auf den einzelnen Clients lokal vorhandene Batchdatei ausführen. Diese Batchdatei gibt je nach Ablauf einen bestimmten ExitCode zurück, auf den ich dann ich dann in der Server-Batch entsprechend reagieren möchte.
Nun gibt PSExec zwar den Rückkehrcode der ausgeführten Batchdatei als Nachricht aus, aber wie kann ich diesen Rückkehrcode nun weiterverarbeiten? Da PSExec korrekt ausgeführt wurde habe ich im weiteren Verlauf der Serverbatch als Errorlevel lediglich "0", nicht aber den Rückkehrcode der ausgeführten Batch-datei.
Beispiel zur Verdeutlichung des Problems:
Wenn ich folgendes versuche
REM start SERVERBATCH
psexec \\computer -u user -p passwort localbatch.bat
ECHO %ERRORLEVEL%
...
(weitere Befehle)
...
REM ende SERVERBATCH
Dann bekomme ich als ERRORLEVEL immer "0" angezeigt, obwohl die localbatch.bat laut psexec-Meldung einen Rückkehrcode "5" hatte.
Wie komme ich für die weiteren Befehle innerhalb der Serverbatch jetzt an eben diesen Rückkehrcode?
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 145078
Url: https://administrator.de/contentid/145078
Ausgedruckt am: 23.11.2024 um 00:11 Uhr
3 Kommentare
Neuester Kommentar
Mein PSExec behauptet:
Error codes returned by PsExec are specific to the applications you execute, not PsExec.
Und tut auch so. Verwende PsExec 1.97
Vermutlich gibt nur ein Programm Errorlevel 5 zurück, aber nicht die gesamte Batch Datei.
Falls Du exit in der Batchdatei verwendest:
ExitBeendet das aktuelle Batchskript oder das Programm Cmd.exe (den Befehlsinterpreter) und kehrt zu dem Programm, das Cmd.exe gestartet hat, oder zum Programm-Manager zurück.
Syntax
exit [/b] [Beendigungscode]
Parameter
/b
Beendet das aktuelle Batchskript.
Beendigungscode
Gibt einen numerischen Wert an.
/?
Zeigt Hilfe an der Eingabeaufforderung an.
Hinweise
Wenn Sie /b außerhalb eines Batchskripts verwenden, führt das zur Beendigung von Cmd.exe.
Wenn Sie /b verwenden, legt Cmd.exe den ERRORLEVEL-Wert auf den angegebenen Beendigungscode fest. Wenn Sie Cmd.exe beenden, legt Cmd.exe den Prozessbeendigungscode mit dem unter Beendigungscode angegebenen Wert fest.
Error codes returned by PsExec are specific to the applications you execute, not PsExec.
Und tut auch so. Verwende PsExec 1.97
Vermutlich gibt nur ein Programm Errorlevel 5 zurück, aber nicht die gesamte Batch Datei.
Falls Du exit in der Batchdatei verwendest:
ExitBeendet das aktuelle Batchskript oder das Programm Cmd.exe (den Befehlsinterpreter) und kehrt zu dem Programm, das Cmd.exe gestartet hat, oder zum Programm-Manager zurück.
Syntax
exit [/b] [Beendigungscode]
Parameter
/b
Beendet das aktuelle Batchskript.
Beendigungscode
Gibt einen numerischen Wert an.
/?
Zeigt Hilfe an der Eingabeaufforderung an.
Hinweise
Wenn Sie /b außerhalb eines Batchskripts verwenden, führt das zur Beendigung von Cmd.exe.
Wenn Sie /b verwenden, legt Cmd.exe den ERRORLEVEL-Wert auf den angegebenen Beendigungscode fest. Wenn Sie Cmd.exe beenden, legt Cmd.exe den Prozessbeendigungscode mit dem unter Beendigungscode angegebenen Wert fest.
Moin always1,
wenn du
Gibt es eventuell noch irgendwelche Feinheiten in der o.g. Skizze, die eigentlich nicht wichtig genug waren, um sie hier zu veröffentlichen?
Grüße
Biber
wenn du
- weder die oben geposteten Batchzeilen 2 und 3 in einer IF() oder FOR ..IN...DO ()-Anweisung stehen hast
- noch einen anderen Befehl zwischen Zeile 2 und Zeile 3 aufrufst
Gibt es eventuell noch irgendwelche Feinheiten in der o.g. Skizze, die eigentlich nicht wichtig genug waren, um sie hier zu veröffentlichen?
Grüße
Biber