OVH Cloud OVH Cloud

sauvegarde des GPO modifiees

21 réponses
Avatar
Jean-Luc
Merci pour ton script
J'ai corrig=E9 2 bugs :( avec beaucoup de mal , je suis completement
novice)
1=B0
arrGPO (2) =3D Replace ( _
> oXml.getElementsByTagName ("ModifiedTime")(0).text, _
> "T", " ")

> cette ligne supprimait la lettre T, du coup le format n etait pas bon voi=
ci ma ligne
arrGPO (2) =3D Left (oXml.getElementsByTagName ("ModifiedTime")(0).text,
10)

2=B0
a la fin du script
j'ai mont=E9 la ligne :
>WScript.Echo "Backup ID : " & oFolder.Name & " (deleted)"
au dessus de
> oFolder.Delete (True) "car la WScript.Echo etait impossible o=
Folder etait efface avt , je suppose"

et du coup le script s'execute correctement, par contre j'avais du mal
m exprimer car
je voulais supprimer les gpo dont le champs modified time est identique
.

explication :
lundi : GPO1 je la sauvegarde > BCK1
mardi : GPO1 je la resauvegarde > BCK2
mercredi : GPO1 je la modifie > GPO1a je sauvegarde > BCK3
jeudi : GPO1a je la sauvegarde > BCK4

actuellement le script garde BCK4, c est comme si je supprimais mon
repertoire sauvegarde
et je reexecutais backupall :-)

je voudrais que le script supprime :
BCK2 car "modified time" est identique =E0 BCK1
BCK4 car "modified time" est identique =E0 BCK3

au finale je retrouve toutes mes versions de GPO1, GPO1a .

Voici le script :
Option Explicit
' d=E9claration des variables
Dim oXml, oFs, oDic, oRootFolder, oFolder
Dim colFolders
Dim arrGPO (5), arrTemp
Dim strGPOId, strKey, strBackupFolder
Dim bBackup


' lecture du dossier racine pass=E9 comme argument
' ce dossier contient les backup id
strBackupFolder =3D WScript.Arguments (0)


' initialisation des objets
set oXml =3D CreateObject("Microsoft.XMLDOM")
set oFS =3D CreateObject ("Scripting.FileSystemObject")
Set oDic =3D CreateObject ("Scripting.Dictionary")

' ouverture du dossier racine
Set oRootFolder =3D oFs.GetFolder (strBackupFolder)

' lecture des sous dossiers (backup id)
Set colFolders =3D oRootFolder.SubFolders

' =E9num=E9ration des backup id
For Each oFolder In ColFolders
' chargement du fichier xml propre =E0 la sauvegarde
' le fichier gpreport.xml est automatiquement g=E9n=E9r=E9
' lors de la sauvegarde de la gpo
oXml.Async=3DFalse
oXml.Load (strBackupFolder & _
"\" & oFolder.Name & _
"\" & "GPReport.xml")
' lecture des valeurs xml via le parser
strGPOId =3D oXml.getElementsByTagName ("Identifier")(1).text
arrGPO (0) =3D oXml.getElementsByTagName ("Name")(0).text
arrGPO (1) =3D oFolder.Name
arrGPO (2) =3D Left (oXml.getElementsByTagName
("ModifiedTime")(0).text, 10)


' calcul d'un timestamp Epoch
arrGPO (3) =3D DateDiff ("S", "1990-01-01", arrGPO (2))
arrGPO (4) =3D oFolder.DateCreated
' stockage des valeurs xml dans un hash
If Not oDic.Exists (strGPOId) Then
oDic (strGPOId) =3D Join (arrGPO, "~")
Else
' la gpo a d=E9j=E0 =E9t=E9 sauvegard=E9e (doublon)
' la plus r=E9cente "gagne"
' utilisation du timestamp calcul=E9 pr=E9c=E9demment
arrTemp =3D Split (oDic (strGPOId), "~")
If CLng (arrGPO (3)) > CLng (arrTemp (3)) Then
oDic (strGPOId) =3D Join (arrGPO, "~")
End If
End If
Next
' les sauvegardes les plus r=E9centes sont stock=E9es dans le hash
' suppression des backup obsol=E8tes et affichage du r=E9sum=E9
For Each oFolder In colFolders
bBackup =3D False
For Each strKey In oDic.Keys
arrTemp =3D Split (oDic (strKey), "~")
If arrTemp (1) =3D oFolder.Name Then
WScript.Echo "GPO ID : " & strkey
WScript.Echo "Modified : " & arrTemp (2)
WScript.Echo "GPO Name : " & arrTemp (0)
WScript.Echo "Backup ID : " & arrTemp (1)
WScript.Echo "Timestamp : " & arrTemp (4)
WScript.Echo ""
bBackup =3D True
Exit For
End If
Next
If bBackup =3D False Then
' le backup est obsol=E8te
' suppression du sous dossier (backup id)
WScript.Echo "Backup ID : " & oFolder.Name & " (deleted)"
oFolder.Delete (True)
WScript.Echo ""
End If
Next

1 réponse

1 2 3
Avatar
jbongran
Gilles LAURENT wrote:
"jbongran" a écrit dans le message de
news:%23Y$
[...]

Non, cela ne fonctionne pas comme cela. Il n'est pas possible de
réaliser des requêtes sql sur un recordset. Les requêtes sql ne
peuvent être utilisées que sur des bases de données (on doit
obligatoirement disposer d'un objet connexion).


Merci de la précision, j'avait zappé ce point

1 2 3