Guten Morgen,
Ich verwende auf einen 2013 SBE Server schon Jahre ein ps1 Skript fürs Backup mit der Aufgabenplanung.
Hat immer funktioniert aber seid zwei Monaten kann er über die Aufgabenplanung nicht mehr auf das NAS.
Direkt ausgeführt läuft das Skript nach wie vor - ich teste vor dem Backup mit einer Schleife die Verfügbarkeit vom NAS und test-path fliegt schon raus -über die Aufgabenplanung - zu irgend etwas danach kommt es gar nicht mehr...
Benutzer und Zugriffe auf den Serverbereich und auf das NAS funktionieren - auch die Ausführungsrechte in der Konsole - Interessant ist eigentlich erst der Skriptbeginn und die Fett geschriebene Zeile - dort fliegt er seid zwei Monaten über die Aufgabenplanung
raus - 5 Jahre hat es funktioniert - und direkt gestartet funktioniert es nach wie vor.
Ich hoffe ihr könnt mir helfen
PS: die Maildaten habe ich hier für die Veröffentlichung aus dem Skript gelöscht und am Anfang gibt es noch ein paar Funktionen die aber gar nie ausgeführt werden da das Skript schon bei test-path praktisch beendet wird..
# Funktionen ############################################################################# # liefert True wenn der letzte des Monats ist, sonst false function get-Monatsende($I) { if($I -eq $null){$I = 0} $I=$I+1 $akt_Datum=get-date $test_Datum = $akt_Datum.adddays($I) $I=$null if ($test_datum.Month -eq $akt_Datum.month) {Return 0}{return 1} } #liefert die Vorsilbe für den Verzeichnisnamen # D_ =Tagesbackup # W_ =Wochenbackup # M_ =Monatsbackup # 0 =KeinBackup - Samstag oder Sonntag function get-TypeOfBackup($I) { if($I -eq $null){$I = 0} $akt_Datum=get-date -date $(get-date).adddays($I) if (get-Monatsende -eq TRUE) { if ($akt_Datum.dayofweek -eq "Monday"){return "M_"} if ($akt_Datum.dayofweek -eq "Tuesday"){return "M_"} if ($akt_Datum.dayofweek -eq "Wednesday"){return "M_"} if ($akt_Datum.dayofweek -eq "Thursday"){return "M_"} if ($akt_Datum.dayofweek -eq "Friday") {return "M_"} } if ($akt_Datum.dayofweek -eq "Monday"){return "D_"} if ($akt_Datum.dayofweek -eq "Tuesday"){return "D_"} if ($akt_Datum.dayofweek -eq "Wednesday"){return "D_"} if ($akt_Datum.dayofweek -eq "Thursday"){return "D_"} if ($akt_Datum.dayofweek -eq "Friday") { if (get-Monatsende 1 -eq TRUE){return "M_"} if (get-Monatsende 2 -eq TRUE){return "M_"} return "W_" } return 0 } #Liefert das Backupverzeichnis #Durchsucht die vorhandenen Verzeichnisse - benennt um, erstellt neu und löscht unnötige function get-BackupDir($I) { Set-Location $Dir_Ziel #$I="D_" if ($I -eq "M_"){$Number_of_Backups = $I_MONAT} if ($I -eq "W_"){$Number_of_Backups = $I_WOCHE} if ($I -eq "D_"){$Number_of_Backups = $I_TAG} $Count=0 $I=$I+"*" $Log = " Vorher #######################################################" $Log >> $Logfile $log = gci $dir_Ziel -filter $I |sort $Log >> $Logfile foreach ($dir in Get-ChildItem $I| ? { $_.PSisContainer -eq $true}) { $Count=$count+1 } If ($Number_of_Backups -eq $count) { if (test-path "$dir_Ziel\$akt_Directory") { } else { rename-item (gci $dir_Ziel -filter $I | ? { $_.PSisContainer -eq $true} |sort | Select -First 1) -NewName "$dir_Ziel\$akt_Directory" } } If ($Number_of_Backups -gt $count) { cd $Dir_Ziel mkdir $akt_Directory } If ($Number_of_Backups -lt $count) { $Count=$count-$Number_of_Backups remove-item (gci $dir_Ziel -filter $I | ? { $_.PSisContainer -eq $true} |sort | Select -First $Count) -Recurse if (test-path "$dir_Ziel\$akt_Directory") { } else { rename-item (gci $dir_Ziel -filter $I | ? { $_.PSisContainer -eq $true} |sort | Select -First 1) -NewName "$dir_Ziel\$akt_Directory" } } $Log = " " $Log >> $Logfile $Log = " " $Log >> $Logfile $Log = " " $Log >> $Logfile $Log = " Nachher #######################################################" $Log >> $Logfile $log = gci $dir_Ziel -filter "*" |sort $Log >> $Logfile } #versendet die E-Mai function send_email { $mailmessage = New-Object system.net.mail.mailmessage $mailmessage.from = ($emailfrom) $mailmessage.To.add($emailto) $mailmessage.Subject = $emailsubject $mailmessage.Body = $emailbody $attachment = New-Object System.Net.Mail.Attachment($LogFile, 'text/plain') $mailmessage.Attachments.Add($attachment) $attachment = New-Object System.Net.Mail.Attachment($LogFileRC, 'text/plain') $mailmessage.Attachments.Add($attachment) #$mailmessage.IsBodyHTML = $true $SMTPClient = New-Object Net.Mail.SmtpClient($SmtpServer, $SMTPPort) $SMTPClient.Credentials = New-Object System.Net.NetworkCredential("$SMTPAuthUsername", "$SMTPAuthPassword") $SMTPClient.EnableSsl = 1 $SMTPClient.Send($mailmessage) $attachment.Dispose() $mailmessage.Dispose() } ############################################################################################# #Beginn Backup Skript #Andreas Krapf #****************** ######################## #Variablendefinition ######################## #Anzahl der Tagessicherungen (4 Ergibt eine Woche gültige Sicherung, danach wird die älteste Überschrieben) $I_TAG = 4 #Anzahl der Wochensicherungen (4 Wochen gültige Sicherung, danach wird die älteste Überschrieben) $I_WOCHE = 4 #Anzahl der Monatssicherungen (12 Monate gültige Sicherung, danach wird die älteste Überschrieben) $I_MONAT = 12 #Intervallgültigkeit Tag oder Monate # Quell, Log und Zielverzeichnis $Dir_Quelle = "D:\Daten" $Dir_Ziel = "\\192.168.0.100\backup" $Dir_Log = "d:\Daten\#backup\log" #Mailfunktion ################################## $EmailFrom = "" $EmailTo = "" $EmailSubject = "" $SMTPServer = "" $SMTPPort = $SMTPAuthUsername = "" $SMTPAuthPassword = "" $emailattachment = "" ################################# #Verzeichnisnamen mit Aktuellem Datum, und das zu überschreibende Datum festlegen $akt_Datum = Get-Date -format "yyyy_MM_dd" $EmailSubject = $EmailSubject + $akt_Datum $LogFile = $Dir_Log + "\" + $akt_Datum + ".txt" $LogfileRC = $Dir_Log + "\" + $akt_Datum + "RC.txt" #NAS ansprechen test-path "$dir_Ziel" #NAS Zeit zum aufwachen geben Start-Sleep -s 60 if (test-path "$dir_Ziel") { $I_TOB = get-TypeOfBackup $akt_Datum = Get-Date -format "yyyy_MM_dd" $akt_Directory = $I_TOB+$akt_Datum if ($I_TOB) { get-BackupDir($I_TOB) robocopy "$Dir_Quelle" "$Dir_Ziel\$akt_Directory" /mir /r:3 /w:1 /ndl /np /njh /nfl /log+:$LogFileRC } else { $Log = $Log + "Wochenende" } } else { $Log = $Log + $dir_Ziel+"NAS nicht verfügbar" $EmailSubject = $EmailSubject + "NAS OFFLINE" } $Log >> $Logfile send_email