Robocopy Exit Codes in PowerShell Script
Robocopy ist ein sehr mächtiges Tool, wenn es um das Kopieren von Dateien und Ordnern geht. Da es viele verschiedene Anwendungsfälle gibt, gibt es auch sehr viele Robocopy Parameter. Ein Kopiervorgang kann erfolgreich abgeschlossen werden, aber auch fehlerhaft sein. Robocopy liefert hier so genannte Exit Codes zurück. Wenn man nun in einem PowerShell Script diese Return Codes auswerten und nutzen möchte, ist das kein Problem.
Robocopy Exit Codes / Return Codes
Wie oben schon genannt, gibt es bei Robocopy Exit Codes, auch genannt als Return Codes. je nach dem welchen Status der Kopiervorgang oder der Backupvorgang hat, oder nach Abschluss hat, wird von dem Kopier-Tool ein Code zurück geliefert. Folgende Exit Codes gibt es in Robocopy:
- Exit Code 1 = Es wurden keine Dateien kopiert. Es wurden keine Fehler festgestellt. Keine Dateien stimmen überein. Die Dateien sind bereits im Zielverzeichnis vorhanden. Daher wurde beim Kopieren übersprungen. Es wurde also nichts getan.
- Exit Code 2 = Alle Dateien wurden erfolgreich kopiert. Das bedeutet es ist alles im grünen Bereich und es sind keine Fehler aufgetreten.
- Exit Code 3 = Das Zielverzeichnis enthält einige zusätzlichen Dateien, die nicht im Quellverzeichnis vorhanden sind. Es wurden keine Dateien kopiert.
- Exit Code 4 = Einige Dateien wurden kopiert. Zusätzliche Dateien waren vorhanden. Es wurden keine Fehler festgestellt.
- Exit Code 5 = Einige Dateien wurden kopiert. Einige Dateien stimmen nicht überein. Es wurden keine Fehler festgestellt.
- Exit Code 6 = Zusätzliche Dateien und nicht übereinstimmenden Dateien vorhanden sind. Es wurden keine Dateien kopiert und es sind keine Fehler aufgetreten. Dies bedeutet, dass die Dateien im Zielverzeichnis bereits vorhanden sind.
- Exit Code 7 = Dateien wurden kopiert, ein Datei-Konflikt war vorhanden und zusätzliche Dateien waren vorhanden.
- Exit Code 8 = Einige Dateien wurden nicht kopiert.
Return Codes in einem PowerShell Script nutzen
Natürlich kann PowerShell auch mit Bordmitteln Dateien und Ordner kopieren. Mächtiger ist aber immer noch Robocopy, da man einfach verschiedenste Schalter an den Befehl anhängt und dann einen Exit Code ausgegeben bekommt.
Kopiert man also Dateien mit Robocopy, so ist es von Vorteil, wenn man dem PS-Script mitteilen kann, ob der Kopier-Vorgang oder der Backup-Vorgang erfolgreich abgeschlossen wurde, oder eben nicht. Ein einfaches Abfangen des Codes würde folgendermaßen aussehen:
robocopy c:\yourSource d:\yourDestination /MIR if ($LastExitCode -eq 0) { write-host "Vorgang erfolgreich!" } else { write-host "Fehlercode: " $LastExitCode }
Wie man sieht kann man mit der Variable $LastExitCode
erfolgreich arbeiten und den Exit Code abfragen. Der Kopier-Gigant hat aber viele Returncodes, welche abgefragt werden müssen. Hierzu erweitert man das Script ganz einfach, das sollte aber selbsterklärend sein.