1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150
| 'Script de Réplication des serveurs MDT
'Ecrit par LM
'Release:
'V1.2 : 1ere version
'V1.3 : Ajout de code de sortie
Dim ObjFSO, ObjNetwork, ObjShell
Dim text, readfile, contents, completeline , entity, LogFolder, LogFolderError, LogFile, LogFileError, LogFileComplet
'On Error Resume next
Set ObjNetwork = CreateObject("WScript.Network")
Set ObjShell = CreateObject("Wscript.Shell")
set ObjFSO = CreateObject("Scripting.FileSystemObject")
Set readfile = objFSO.OpenTextFile("D:\Robocopy\Script\ServeursMDT.txt", 1, false)
'On traite la date pour la remettre au format francais et récupérer le jour
strDates = Replace(Date,"/","-")
SplitDate = Split(Date, "/")
SplitMonth = SplitDate(0)
strMonth = Len(SplitMonth)
If strMonth = 1 then
strMois = "0" & SplitMonth
Else
StrMois = SplitMonth
End If
SplitDay = SplitDate(1)
strDay = Len(SplitDay)
If strDay = 1 then
strJour = "0" & SplitDay
Else
strJour = SplitMonth
End if
strAnnee = SplitDate(2)
strFrDate = strJour & strMois & strAnnee
'on recupere le nom du jour
completeDate = FormatDateTime(Now, vbLongDate)
SplitDate = Split(CompleteDate, ",")
Dayname = UCASE(SplitDate(0))
'Boucle qui va traiter ligne par ligne le fichier txt qui comporte la liste des serveurs
'Une fois le dernier ligne traité, le script s'arrete
do while readfile.AtEndOfStream=false
completeline = readfile.ReadLine
ServMDT = Split(completeline, ";")
NameSrvMDT = "NTLEVHA"
'On détermine le serveur de référence pour la copie
RepSource = "\\NTLEVHA\DSW7Deploy$"
RepDest = "\\" & NameSrvMDT & "\DSW7Deploy$"
LogFileEvent = "D:\Robocopy\Log\Events\JournaldesReplications.log"
LogFileValidation = "D:\Robocopy\Log\Validation\" & NameSrvMDT & "OK.log"
LogFileError = "D:\Robocopy\Log\Erreurs\" & NameSrvMDT & "_" & strFrDate & ".log"
'On vérifie si il existe un fichier de vaidation signifiant que le serveur est déja fait
If Not(objFSO.FileExists(LogFileValidation)) then
'On vérifie si on est un jour ou on peut faire la réplication
select case Dayname
Case "SUNDAY", "MONDAY", "TUESDAY", "WEDNESDAY", "THURSDAY"
Heure = Hour(Time)
'On vérifie si on est dans les heures de réplication
If Heure = "10" Or Heure = "11" Or Heure = "12" Or Heure = "13" Or Heure = "14" Or Heure = "01" Or Heure = "02" then
ErrorLevel = Objshell.Run ("cmd /C Robocopy.exe """ & RepSource & """ """ & RepDest & """ /L /e /R:1 /W:2 /v /XF CustomSettings.ini Settings.xml Audit.log Bootstrap.ini /log+:D:\Robocopy\Log\ResultCopy\" & NameSrvMDT & "_" & strFrDate & ".log /TEE /NP",1,True)
Select Case ErrorLevel
Case "0"
LogIT LogFileValidation, FormatDateTime(Now, vbLongDate)
LogIT LogFileEvent, NameSrvMDT & " : Code de sortie " & ErrorLevel & " :Aucun fichier n'a été copié. Aucune défaillance ne sest produite. Aucun fichier nétait incompatibles. Les fichiers existent déjà dans le répertoire de destination ; Par conséquent, lopération de copie a été ignorée."
Case "1"
LogIT LogFileValidation, FormatDateTime(Now, vbLongDate)
LogIT LogFileEvent, NameSrvMDT & " : Code de sortie " & ErrorLevel & " :Tous les fichiers ont été copiés avec succès."
Case "3"
LogIT LogFileValidation, FormatDateTime(Now, vbLongDate)
LogIT LogFileEvent, NameSrvMDT & " : Code de sortie " & ErrorLevel & " :Certains fichiers ont été copiés. Fichiers supplémentaires étaient présents. Aucune défaillance ne sest produite."
Case "5"
LogIT LogFileValidation, FormatDateTime(Now, vbLongDate)
LogIT LogFileEvent, NameSrvMDT & " : Code de sortie " & ErrorLevel & " :Certains fichiers ont été copiés. Certains fichiers étaient incompatibles. Aucune défaillance ne sest produite."
Case "6"
LogIT LogFileValidation, FormatDateTime(Now, vbLongDate)
LogIT LogFileEvent, NameSrvMDT & " : Code de sortie " & ErrorLevel & " :Il existe des fichiers et des fichiers qui ne correspondent pas. Aucun fichier n'a été copié, aucune défaillance ne s'est produite. Cela signifie que les fichiers existent déjà dans le répertoire de destination."
Case "7"
LogIT LogFileValidation, FormatDateTime(Now, vbLongDate)
LogIT LogFileEvent, NameSrvMDT & " : Code de sortie " & ErrorLevel & " :Les fichiers ont été copiés, un fichier incompatible a été rencontré et d'autres supplémentaires étaient déjà présents."
Case "8"
LogIT LogFileValidation, FormatDateTime(Now, vbLongDate)
LogIT LogFileEvent, NameSrvMDT & " : Code de sortie " & ErrorLevel & " :Plusieurs fichiers n'ont pas été copiés."
Case "-1073741510"
LogIT LogFileError, NameSrvMDT & " : Code erreur " & ErrorLevel & " :impossible d'acceder au partage."
LogIT LogFileEvent, NameSrvMDT & " : Code erreur " & ErrorLevel & " :impossible d'acceder au partage."
Case Else
LogIT LogFileError, NameSrvMDT & " : Code erreur " & ErrorLevel & " :impossible de mettre à jour le serveur."
LogIT LogFileEvent, NameSrvMDT & " : Code erreur " & ErrorLevel & " :impossible de mettre à jour le serveur."
End Select
Else
LogIT LogFileEvent, NameSrvMDT & " : Horaire de réplication dépassé, arret du script"
readfile.Close
Wscript.Quit()
End if
case "FRI"
ErrorLevel = Objshell.Run ("cmd /C Robocopy.exe """ & RepSource & """ """ & RepDest & """ /L /e /R:1 /W:2 /v /XF CustomSettings.ini Settings.xml Audit.log Bootstrap.ini /log+:D:\Robocopy\Log\ResultCopy\" & NameSrvMDT & "_" & strFrDate & ".log /TEE /NP",1,True)
Select Case ErrorLevel
Case "0"
LogIT LogFileValidation, FormatDateTime(Now, vbLongDate)
LogIT LogFileEvent, NameSrvMDT & " : Code de sortie " & ErrorLevel & " :Mise à jour du serveur terminé"
Case "1"
LogIT LogFileValidation, FormatDateTime(Now, vbLongDate)
LogIT LogFileEvent, NameSrvMDT & " : Code de sortie " & ErrorLevel & " :Mise à jour du serveur terminé"
Case "3"
LogIT LogFileValidation, FormatDateTime(Now, vbLongDate)
LogIT LogFileEvent, NameSrvMDT & " : Code de sortie " & ErrorLevel & " :Mise à jour du serveur terminé"
Case "-1073741510"
LogIT LogFileError, NameSrvMDT & FormatDateTime(Now, vbLongDate)
LogIT LogFileError, NameSrvMDT & " : Code erreur " & ErrorLevel & " :impossible d'acceder au partage."
LogIT LogFileEvent, NameSrvMDT & " : Code erreur " & ErrorLevel & " :impossible d'acceder au partage."
Case Else
LogIT LogFileError, NameSrvMDT & FormatDateTime(Now, vbLongDate)
LogIT LogFileError, NameSrvMDT & " : Code erreur " & ErrorLevel & " :impossible de mettre à jour le serveur."
LogIT LogFileEvent, NameSrvMDT & " : Code erreur " & ErrorLevel & " :impossible de mettre à jour le serveur."
End Select
End Select
Else
LogIT LogFileEvent, NameSrvMDT & " : Serveur deja mise à jour"
End if
'loop
LogIT LogFileEvent, "------------------------------------------------------------------------------------------------------------------------"
LogIT LogFileEvent, "------------------------------------------------------------------------------------------------------------------------"
'readfile.Close
Wscript.Quit()
' ---------------------------------------------------------------------------------------------
' -
' - L O G I T
' -
' - Log le message MSG dans le fichier FichierLog.
' -
' ---------------------------------------------------------------------------------------------
Sub LogIT(FichierLog, LogMsg)
On Error Resume Next
Dim oGF, oLF
Const ForReading = 1, ForWriting = 2, ForAppending = 8
Const TristateUseDefault = -2, TristateTrue = -1, TristateFalse = 0
If Not objFso.fileExists(FichierLog) Then
objFso.createTextFile FichierLog
End If
Set oGF = objFso.GetFile(FichierLog)
' Ouverture en mode Ajout
Set oLF = oGF.OpenAsTextStream(ForAppending, TristateUseDefault)
oLF.Write Date & "|" & Time & "| " & LogMsg & VbCrlf
oLF.Close
End Sub' |