filou204
Goto Top

Server 2008 R2 Aufgabenplanung - Skript funktioniert nicht richtig.

Hallo und hilfe!

Ich habe folgendes Problem:

Ich habe Skript geschrieben, welches 3 Dateien (virtuelle Festplatten von Hyper-V) übers Netzwerk kopiert und anschließend eine E-Mail (mit blat.exe) versendet, wenn das Kopieren geklappt hat.
Quelle: "F:\VMs" auf "\\HYPER-V". Ziel: "D:\VMs" auf "\\BACKUPSERVER"
Wenn ich das Skript manuell in der CMD starte, läuft es normal durch und macht was es soll. Wenn ich das Skript über die Aufgabenplanung starte, kopiert es zwar, verschickt aber anschließend keine Benachrichtigung ob das Kopieren geklappt hat. Lediglich die erste Mail, dass der Server heruntergefahrn wird kommt an. Leider kann ich dann nicht sehen wo es genau aussteigt.


Details:

Das Script tut in Etwa folgendes:
- Eine E-Mail wird versendet dass der virtuelle Server heruntergefahren wird.
- Warte 10 Min.
- Virtuelle Computer werden heruntergefahren.
- Netzlaufwerk wird verbunden.
- Dateien werden Kopiert.
- Virtuelle Computer werden gestartet
- Es wird 40 Min gewartet (...bis der Exchange-Server gestartet ist)
- E-Mail ob das Kopieren geklappt hat wird versendet.

Gestartet wird das Script über die Aufgabenplanung als Domänen Admin. Das Programm lautet "%systemroot%\system32\cmd.exe" und der Parameter "/c f:\scripts\vmbackup.cmd"

Hier das Script:
@echo off
cls
echo HYPER-V SICHERUNG WIRD INITIALISIERT...
echo.
echo BENACHRICHTIGUNG WIRD PER E-MAIL VERSENDET.
f:\scripts\blat "f:\scripts\Mail-Start.txt" -to info@domain.local -server SBS -subject "Datensicherung: Server wird heruntergefahren."  
echo.
echo.
echo ES WIRD 10 MINUTEN GEWARTET, BIS DER VORGANG VORTGESETZT WIRD...
REM wait 600000
echo.
echo.
echo NETZWERKVERBINDUNGEN WERDEN HERGESTELLT...
echo.
net use y: /delete
net use y: \\backupserver\vms
echo.
echo.
echo VIRTUELLE COMPUTER WERDE HERUNTERGEFAHREN...
echo.
%SystemRoot%\system32\WindowsPowerShell\v1.0\powershell.exe f:\scripts\StartStopVms.ps1 f:\scripts\VmNamesStop.txt 1
echo.
echo.
echo STARTE KOPIERVORGANG...
echo.
goto NEXTA
echo KOPIERE "Windows XP"...  
echo.
xcopy /y "f:\vpc\WinXPAppSrv\Windows XP Application Server.vhd" "y:\WinXPAppSrv\Windows XP Application Server.vhd" /e  
if %errorlevel% == 0 goto NEXTA
if %errorlevel% == 1 goto FAILED
if %errorlevel% == 2 goto FAILED
if %errorlevel% == 3 goto FAILED
if %errorlevel% == 4 goto FAILED
if %errorlevel% == 5 goto FAILED


:NEXTA
echo.
echo.
echo KOPIERE "Datenfreigaben"...  
echo.
xcopy /y "f:\vpc\Win2008DomCon\Datenfreigaben.vhd" "y:\Win2008DomCon\Datenfreigaben.vhd" /e  
if %errorlevel% == 0 goto NEXTB
if %errorlevel% == 1 goto FAILED
if %errorlevel% == 2 goto FAILED
if %errorlevel% == 3 goto FAILED
if %errorlevel% == 4 goto FAILED
if %errorlevel% == 5 goto FAILED

:NEXTB
echo.
echo.
echo KOPIERE "Win 2008 Domaenenc."...  
echo.
xcopy /y "f:\vpc\Win2008DomCon\Win 2008 Domaenencontroller.vhd" "y:\Win2008DomCon\Win 2008 Domaenencontroller.vhd" /e  
if %errorlevel% == 0 goto OK
if %errorlevel% == 1 goto FAILED
if %errorlevel% == 2 goto FAILED
if %errorlevel% == 3 goto FAILED
if %errorlevel% == 4 goto FAILED
if %errorlevel% == 5 goto FAILED

:OK
echo.
echo.
echo DIE SICHERUNG WURDE ERFLOGREICH ABGESCHLOSSEN.
echo.
echo VIRTUELLE COMPUTER WERDEN GESTARTET...
echo.
%SystemRoot%\system32\WindowsPowerShell\v1.0\powershell.exe f:\scripts\StartStopVms.ps1 f:\scripts\VmNamesStart.txt 0
echo.
echo.
echo ES WIRD GEWARTET, BIS ALLE VIRTUELLEN COMPUTER GESTARTET SIND.
echo WARTE 40 MINUTEN...
echo.
wait 600000
wait 600000
wait 600000
wait 600000
echo.
echo.
echo SENDE BENACHRICHTIGUNG...
f:\scripts\blat "f:\scripts\Mail-OK.txt" -to info@domain.local -server sbs2008 -subject "Sicherung auf Hyper-V-Server erfolgreich."  
goto END


:FAILED
echo.
echo.
echo. DIE SICHERUNG IST FEHLGESCHLAGEN.
echo.
echo VIRTUELLE COMPUTER WERDEN GESTARTET...
echo.
%SystemRoot%\system32\WindowsPowerShell\v1.0\powershell.exe f:\scripts\StartStopVms.ps1 f:\scripts\VmNamesStart.txt 0
echo.
echo.
echo ES WIRD GEWARTET, BIS ALLE VIRTUELLEN COMPUTER GESTARTET SIND...
echo WARTE 40 MINUTEN...
echo.
wait 600000
wait 600000
wait 600000
wait 600000
echo.
echo.
echo SENDE BENACHRICHTIGUNG...
f:\scripts\blat "f:\scripts\Mail-Failed.txt" -to info@domain.local -server sbs2008 -subject "WARNUNG: Sicherung auf Hyper-V-Server felgeschlagen."  
goto END


:END
echo.
echo.
echo DER VORGANG IST BEENDET.

Meine Vermutung ist, dass es vielleicht an dem GOTO oder dem WAIT liegt?
Hat jemand eine Idee, woran das liegen kann?
Würde mich über Tips und Denkanstöße freuen!


Gruß
Filou

Content-Key: 153679

Url: https://administrator.de/contentid/153679

Ausgedruckt am: 29.03.2024 um 06:03 Uhr

Mitglied: filou204
filou204 25.10.2010 um 09:54:23 Uhr
Goto Top
PS: Ich glaube ich habe den Fehler eingrenzen können.

Ich habe den Teil WAIT und E-MAIL versenden in eine seperate Datei kopiert und mit dem aufgabenplaner gestartet.

Ergebnis: Die E-Mail wird sofort versendet. Das WAIT scheint nicht zu funktionieren, wenn es über den Aufgabenplaner gestartet wird.

Kennt jemand eine eine Alternative zu der WAIT.EXE?
Mitglied: bastla
bastla 25.10.2010 um 10:46:37 Uhr
Goto Top
Hallo filou204!

Versuch es mit der "sleep.exe" aus den Windows Server 2003 Resource Kit Tools ...

Grüße
bastla
Mitglied: filou204
filou204 25.10.2010 um 13:44:16 Uhr
Goto Top
Hallo bastla,

Danke für Deine Antwort. Es hat leider nicht funktioniert. Wenn ich das Script mit sleep 60 (wartet also 1 Min.) per Aufgabenplanung starte, steht sofort "Der Vorgang wurde erfolgreich beendet." da und ich erhalte die testmail.
Wenn ich das Script über die CMD selbst starte, wartet die Sleep Anweisung.

face-sad
Mitglied: filou204
filou204 25.10.2010 um 15:12:44 Uhr
Goto Top
Habs rausgefunden. So ein dummer Fehler...

Es muss heißen F:\scripts\sleep 60
und NICHT nur speep 60

face-smile
Mitglied: bastla
bastla 25.10.2010 um 15:14:52 Uhr
Goto Top
Hallo filou204!

Zur Sicherheit könntest Du noch für "sleep" (oder auch "wait") den vollständigen Pfad angeben (und das "echo off" vorübergehend in ein "echo on" verwandeln, um den Ablauf besser kontrollieren zu können) ...

Grüße
bastla

[Edit] Hat sich jetzt zeitlich überschnitten, aber: Selber rausfinden ist ohnehin schöner ... face-smile [/Edit]