Hallo,
ich möchte mir über ein Script automatisiert auf einem Server 2008 R2 eine VHD aller Laufwerke mit dem Sysinternals Tool "disk2vhd.exe" erstellen lassen. Das Script soll erst nach der Erstellung der VHDs fortfahren.
Wichtig ist besonders, dass eine Prüfung stattfindet, ob die VHD(s) mit disk2vhd auch ordnungsgemäß erzeugt wurden. Hierzu soll nach dem Beenden des Aufrufs von disk2vhd geprüft werden, ob das Programm ordnungsgemäß durchgelaufen ist, oder ob es bei
der Erstellung irgendeinen Fehler gab (etwa im Schattenkopiedienst oder ähnliches) auftrat. Die Prüfung soll zwingend bei der Erstellung erfolgen - also beim Aufruf bzw. beim Beenden des Aufrufs - und nicht etwa durch nachträgliche Dateigrößenprüfung,
Datumsprüfung oder ähnliches!
Bei Batch-Scripts arbeitete man soweit ich weiß noch mit Rückgabewerten oder Errorcodes - dies scheint bei der PowerShell aber etwas anders zu laufen. Leider scheinen $?, $LASTEXITCODE oder $Error den Ergebniscode von disk2vhd nicht aufzunehmen. Bzw. weiß ich nicht, ob ein dort geloggter Fehler von Disk2VHD oder einer Codezeile früher resultiert. Bislang war es mir zumindest nicht möglich herauszufinden, an welcher Stelle so ein Rückgabewert auftaucht bzw. wie ich diesen abgreifen muss und identifizieren kann. Derzeit sieht der relevante Teil des Scripts wie folgt auf:
$Programmpfad = "C:\Disk2vhd\disk2vhd.exe" $Sicherungspfad = "\\SERVERNAME\Freigabe$\_VHDs\" $Computername = "_DUMMY_COMPUTERNAME" $Computername = Get-Content env:Computername $VHD_Dateipfad = $Sicherungspfad + $Computername + ".VHD" $LOG_Dateipfad = $Sicherungspfad + $Computername + ".LOG" $argumente = "* " + VHD_Dateipfad Start-Process $Programmpfad -ErrorAction Continue -ArgumentList $argumente -WindowStyle Hidden -PassThru | Wait-Process
PS: Eine Try/Catch Behandlung generiert auch keinen Fehler bei der Erstellung der VHD-Datei, solange disk2vhd nicht durch einen Systemfehler beendet wird. Sprich: Es wird nur ein Fehler erkennt, der das Programm betrifft (etwa: disk2vhd-prozess crashed), nicht aber einen Fehler während der VHD-Erstellung (etwa: eine unterbrochene Netzwerkverbindung).
Ich sage schon jetzt danke an alle Helfer! Unnötig zu sagen, dass meine PowerShell Erfahrungen noch recht übersichtlich sind ;-)
VG