Suppression des dossiers "backupId" GPMC en double après une sauvegarde totale Ce script devra s'exécuter après une sauvegarde totale des GPOs. La sauvegarde totale est réalisée soit via l'interface graphique GPMC ou soit à l'aide du script BackupAllGPOs.wsf fourni avec la console. Les doublons du répertoire de sauvegarde seront automatiquement supprimés et seuls les dossiers des GPOs modifiées seront préservés. La case à cocher "N'afficher que la dernière version des objets GPO" disponible dans la fenêtre de gestion des sauvegardes prendra alors tout son sens. Historique: Version 1.0 - première release publique Plateformes supportées: Windows XP/2003 Pré requis: GPMC SP1 Usage: \>cscript cleanGPMCBackupFolder.vbs <gpmc_backup_folder> Code source VBScript: 1 Option Explicit 2 3 4 Dim oFs, oRs, oXml, oFolder 5 Dim colFolders 6 Dim strBkpFolder 7 Dim nRecordIndex 8 9 10 Const adFilterNone = 0 11 Const adUseClient = 3 12 Const adOpenStatic = 3 13 Const adVarChar = 200 14 15 16 Set oFs = CreateObject ("Scripting.FileSystemObject") 17 Set oRs = CreateObject ("ADODB.RecordSet") 18 set oXml = CreateObject ("Microsoft.XMLDOM") 19 20 21 22 oRs.CursorLocation = adUseClient 23 oRs.CursorType = adOpenStatic 24 25 26 oRs.Fields.Append "backupId", adVarChar, 38 27 oRs.Fields.Append "timeStamp", adVarChar, 20 28 oRs.Fields.Append "backupInfo", adVarChar, 57 29 30 31 oRs.Open 32 33 34 35 strBkpFolder = WScript.Arguments (0) 36 37 38 Set colFolders = oFs.GetFolder (strBkpFolder).SubFolders 39 40 41 For Each oFolder in colFolders 42 oRs.AddNew 43 oRs.Fields ("backupId").Value = oFolder.Name 44 oRs.Fields ("timeStamp").Value = DateDiff ("s", 0, oFolder.DateCreated) 45 oRs.Fields ("backupInfo").Value = GetBkpInfo (oFolder.Name) 46 Next 47 48 49 50 51 oRs.MoveFirst 52 oRs.Sort = "timeStamp ASC" 53 54 55 Do While Not oRs.EOF 56 57 nRecordIndex = oRs.AbsolutePosition 58 59 60 61 oRs.Filter = GetBkpFilter (oRs.Fields ("backupId").Value, oRs.Fields ("backupInfo").Value) 62 63 64 65 Do While Not oRs.EOF 66 oFs.DeleteFolder strBkpFolder & "\" & oRs.Fields ("backupId").Value, True 67 WScript.Echo oRs.Fields ("backupId").Value & " (deleted)" 68 oRs.Delete 69 oRs.MoveNext 70 Loop 71 72 73 oRs.Filter = adFilterNone 74 75 76 oRs.AbsolutePosition = nRecordIndex + 1 77 Loop 78 79 80 Function GetBkpInfo (strBackupId) 81 82 83 oXml.Async = False 84 If Not oXml.Load (strBkpFolder & "\" & strBackupId & "\" & "gpreport.xml") Then 85 86 87 WScript.Echo "*ERROR* Unable to load gpreport.xml from " & strBackupId 88 WScript.Quit (1) 89 End If 90 91 92 On Error Resume Next 93 94 95 GetBkpInfo = _ 96 oXml.getElementsByTagName ("Identifier/Identifier")(0).text & _ 97 oXml.getElementsByTagName ("ModifiedTime")(0).text 98 99 100 If Err.Number <> 0 Then 101 102 103 WScript.Echo "*ERROR* Unable to parse gpreport.xml from " & strBackupId 104 WScript.Quit (1) 105 End If 106 107 108 On Error Goto 0 109 110 End Function 111 112 113 Function GetBkpFilter (strBackupId, strBackupInfo) 114 115 GetBkpFilter = _ 116 "backupId <> '" & strBackupId & "' " & _ 117 "And backupInfo = '" & strBackupInfo & "'" 118 End Function
Téléchargement: Guide PDF: - Archive: cleangpmcbackupfolder.zip
|