Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

Sauvegarde des strategies (GPO) modifiées

3 réponses
Avatar
Jean-Luc
Bonjour,
je voudrais seulement sauvegarder mes strategies modifi=E9es.

J'utilise le script fourni par la GPMC ; BackupAllGPOs.wsf pour
sauvegader toutes mes strategies.

Lorsque je sauvegarde =E0 nouveau les GPO, dans la fenetre "gerer mes
sauvegardes" les GPO apparaissent en double avec des dates differentes
quelles soient identiques ou pas .

Maintenant je voudrais sauvegarder seulement celles qui =E9t=E9
modifi=E9es .

Y a t il moyen de consulter le gpreport.xml de chaque GPO
afin de consulter les champs <name> et <modified time> ?

Pour supprimer les doublons c'est =E0 dire : les
dossiers dont le fichier xml a ces 2 champs identiques ?

Ou si quelqu un a une notre id=E9e ?

3 réponses

Avatar
Gilles LAURENT
"Jean-Luc" a écrit dans le message de
news:
| Bonjour,

Bonsoir,

| Y a t il moyen de consulter le gpreport.xml de chaque
| GPO afin de consulter les champs <name> et <modified time> ?
| Pour supprimer les doublons c'est à dire : les
| dossiers dont le fichier xml a ces 2 champs identiques ?

Ci-dessous le script VBScript 'purgeBackupFolder.vbs' permettant de
supprimer les dossiers "Backup Id" obsolètes. Ce script pourra
s'exécuter après une sauvegarde totale des gpo réalisée via gpmc ou
backupAllGpos.wsf dans le but visant à faire le "ménage" du répertoire
de sauvegarde (i.e suppression des doublons)

+++ Environnement de test
GPMC SP1
XP SP1/SP2 W2K3 SP1

+++ Pré requis
Internet Explorer 5.x (Parser XMLDOM)
Contrôle total sur les objets gpo
Contrôle total sur les dossiers des sauvegardes

+++ Usage
>cscript purgeBackupFolder.vbs <dossier_de_backup_des_gpo>

+++ Exemple
>cscript purgeBackupFolder.vbs C:gpmcbackup

--- Coupez ici : purgeBackupFolder.vbs ---

Option Explicit

' déclaration 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é comme argument
' ce dossier contient les backup id
strBackupFolder = WScript.Arguments (0)

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

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

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

' énumération des backup id
For Each oFolder In ColFolders

' chargement du fichier xml propre à la sauvegarde
' le fichier gpreport.xml est automatiquement généré
' lors de la sauvegarde de la gpo
oXml.Asyncúlse
oXml.Load (strBackupFolder & _
"" & oFolder.Name & _
"" & "GPReport.xml")

' lecture des valeurs xml via le parser
strGPOId = oXml.getElementsByTagName ("Identifier")(1).text
arrGPO (0) = oXml.getElementsByTagName ("Name")(0).text
arrGPO (1) = oFolder.Name
arrGPO (2) = Replace ( _
oXml.getElementsByTagName ("ModifiedTime")(0).text, _
"T", " ")

' calcul d'un timestamp Epoch
arrGPO (3) = DateDiff ("S", "1970-01-01", arrGPO (2))
arrGPO (4) = oFolder.DateCreated

' stockage des valeurs xml dans un hash
If Not oDic.Exists (strGPOId) Then
oDic (strGPOId) = Join (arrGPO, "~")
Else
' la gpo a déjà été sauvegardée (doublon)
' la plus récente "gagne"
' utilisation du timestamp calculé précédemment
arrTemp = Split (oDic (strGPOId), "~")
If CLng (arrGPO (3)) > CLng (arrTemp (3)) Then
oDic (strGPOId) = Join (arrGPO, "~")
End If
End If
Next

' les sauvegardes les plus récentes sont stockées dans le hash
' suppression des backup obsolètes et affichage du résumé
For Each oFolder In colFolders
bBackup = False
For Each strKey In oDic.Keys
arrTemp = Split (oDic (strKey), "~")
If arrTemp (1) = 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 = True
Exit For
End If
Next

If bBackup = False Then
' le backup est obsolète
' suppression du sous dossier (backup id)
oFolder.Delete (True)
WScript.Echo "Backup ID : " & oFolder.Name & " (deleted)"
WScript.Echo ""
End If
Next

--- Coupez ici : purgeBackupFolder.vbs ---

--
Gilles LAURENT
Me contacter : http://cerbermail.com/?zoTY7ZkLcD
Avatar
Jean-Luc
Merci pour ton script
J'ai corrigé 2 bugs :( avec beaucoup de mal , je suis completement
novice)

arrGPO (2) = 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) = Left (oXml.getElementsByTagName ("ModifiedTime")(0).text,

10)


a la fin du script
j'ai monté la ligne :
WScript.Echo "Backup ID : " & oFolder.Name & " (deleted)"
au dessus de

oFolder.Delete (True)


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 à BCK1
BCK4 car "modified time" est identique à BCK3

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





"Jean-Luc" a écrit dans le message de
news:
| Bonjour,

Bonsoir,

| Y a t il moyen de consulter le gpreport.xml de chaque
| GPO afin de consulter les champs <name> et <modified time> ?
| Pour supprimer les doublons c'est à dire : les
| dossiers dont le fichier xml a ces 2 champs identiques ?

Ci-dessous le script VBScript 'purgeBackupFolder.vbs' permettant de
supprimer les dossiers "Backup Id" obsolètes. Ce script pourra
s'exécuter après une sauvegarde totale des gpo réalisée via gpmc ou
backupAllGpos.wsf dans le but visant à faire le "ménage" du réperto ire
de sauvegarde (i.e suppression des doublons)

+++ Environnement de test
GPMC SP1
XP SP1/SP2 W2K3 SP1

+++ Pré requis
Internet Explorer 5.x (Parser XMLDOM)
Contrôle total sur les objets gpo
Contrôle total sur les dossiers des sauvegardes

+++ Usage
>cscript purgeBackupFolder.vbs <dossier_de_backup_des_gpo>

+++ Exemple
>cscript purgeBackupFolder.vbs C:gpmcbackup

--- Coupez ici : purgeBackupFolder.vbs ---

Option Explicit

' déclaration 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é comme argument
' ce dossier contient les backup id
strBackupFolder = WScript.Arguments (0)

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

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

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

' énumération des backup id
For Each oFolder In ColFolders

' chargement du fichier xml propre à la sauvegarde
' le fichier gpreport.xml est automatiquement généré
' lors de la sauvegarde de la gpo
oXml.Asyncúlse
oXml.Load (strBackupFolder & _
"" & oFolder.Name & _
"" & "GPReport.xml")

' lecture des valeurs xml via le parser
strGPOId = oXml.getElementsByTagName ("Identifier")(1).text
arrGPO (0) = oXml.getElementsByTagName ("Name")(0).text
arrGPO (1) = oFolder.Name
arrGPO (2) = Replace ( _
oXml.getElementsByTagName ("ModifiedTime")(0).text, _
"T", " ")

' calcul d'un timestamp Epoch
arrGPO (3) = DateDiff ("S", "1970-01-01", arrGPO (2))
arrGPO (4) = oFolder.DateCreated

' stockage des valeurs xml dans un hash
If Not oDic.Exists (strGPOId) Then
oDic (strGPOId) = Join (arrGPO, "~")
Else
' la gpo a déjà été sauvegardée (doublon)
' la plus récente "gagne"
' utilisation du timestamp calculé précédemment
arrTemp = Split (oDic (strGPOId), "~")
If CLng (arrGPO (3)) > CLng (arrTemp (3)) Then
oDic (strGPOId) = Join (arrGPO, "~")
End If
End If
Next

' les sauvegardes les plus récentes sont stockées dans le hash
' suppression des backup obsolètes et affichage du résumé
For Each oFolder In colFolders
bBackup = False
For Each strKey In oDic.Keys
arrTemp = Split (oDic (strKey), "~")
If arrTemp (1) = 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 = True
Exit For
End If
Next

If bBackup = False Then
' le backup est obsolète
' suppression du sous dossier (backup id)
oFolder.Delete (True)
WScript.Echo "Backup ID : " & oFolder.Name & " (deleted)"
WScript.Echo ""
End If
Next

--- Coupez ici : purgeBackupFolder.vbs ---

--
Gilles LAURENT
Me contacter : http://cerbermail.com/?zoTY7ZkLcD


Avatar
Jean-Luc
Merci pour ton script

J'ai corrige 2 bugs :( avec beaucoup de mal je suis completement
novice)

un probleme de date : il conservait les caracteres apres le T
j ai remplace la ligne :
arrGPO (2) = Replace ( _
oXml.getElementsByTagName ("ModifiedTime")(0).text, _
"T", " ")
par

arrGPO (2) = Left (oXml.getElementsByTagName ("ModifiedTime")(0).text,
10)


J'ai monté la ligne ( chemin introuvable )
WScript.Echo "Backup ID : " & oFolder.Name & " (deleted)"
au dessus de :
oFolder.Delete (True)

Par contre j'ai du mal m exprimer car le script ne conserve qu une
seule version des gpo
ce qui correspond a supprimer mon repertoire de sauvegarde et à
refaire un backupallgpo
:-))

ce que je voudrais :

lundi GPO1 version INIT je la sauvegarde > BCK1
mardi GPO1 version INIT je la sauvegarde > BCK2
mercredi GPO1 version A je la sauvegarde > BCK3
jeudi GPO1 version A je la sauvegarede > BCK4

le script doit supprimer
BCK2 car "modified Time" est identique BCK1
BCK4 car "modified Time" est identique BCK3

il me reste mes 2 version de ma GPO1 ,
version INIT et la version A.

voila


"Jean-Luc" a écrit dans le message de
news:
| Bonjour,

Bonsoir,

| Y a t il moyen de consulter le gpreport.xml de chaque
| GPO afin de consulter les champs <name> et <modified time> ?
| Pour supprimer les doublons c'est à dire : les
| dossiers dont le fichier xml a ces 2 champs identiques ?

Ci-dessous le script VBScript 'purgeBackupFolder.vbs' permettant de
supprimer les dossiers "Backup Id" obsolètes. Ce script pourra
s'exécuter après une sauvegarde totale des gpo réalisée via gpmc ou
backupAllGpos.wsf dans le but visant à faire le "ménage" du réperto ire
de sauvegarde (i.e suppression des doublons)

+++ Environnement de test
GPMC SP1
XP SP1/SP2 W2K3 SP1

+++ Pré requis
Internet Explorer 5.x (Parser XMLDOM)
Contrôle total sur les objets gpo
Contrôle total sur les dossiers des sauvegardes

+++ Usage
>cscript purgeBackupFolder.vbs <dossier_de_backup_des_gpo>

+++ Exemple
>cscript purgeBackupFolder.vbs C:gpmcbackup

--- Coupez ici : purgeBackupFolder.vbs ---

Option Explicit

' déclaration 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é comme argument
' ce dossier contient les backup id
strBackupFolder = WScript.Arguments (0)

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

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

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

' énumération des backup id
For Each oFolder In ColFolders

' chargement du fichier xml propre à la sauvegarde
' le fichier gpreport.xml est automatiquement généré
' lors de la sauvegarde de la gpo
oXml.Asyncúlse
oXml.Load (strBackupFolder & _
"" & oFolder.Name & _
"" & "GPReport.xml")

' lecture des valeurs xml via le parser
strGPOId = oXml.getElementsByTagName ("Identifier")(1).text
arrGPO (0) = oXml.getElementsByTagName ("Name")(0).text
arrGPO (1) = oFolder.Name
arrGPO (2) = Replace ( _
oXml.getElementsByTagName ("ModifiedTime")(0).text, _
"T", " ")

' calcul d'un timestamp Epoch
arrGPO (3) = DateDiff ("S", "1970-01-01", arrGPO (2))
arrGPO (4) = oFolder.DateCreated

' stockage des valeurs xml dans un hash
If Not oDic.Exists (strGPOId) Then
oDic (strGPOId) = Join (arrGPO, "~")
Else
' la gpo a déjà été sauvegardée (doublon)
' la plus récente "gagne"
' utilisation du timestamp calculé précédemment
arrTemp = Split (oDic (strGPOId), "~")
If CLng (arrGPO (3)) > CLng (arrTemp (3)) Then
oDic (strGPOId) = Join (arrGPO, "~")
End If
End If
Next

' les sauvegardes les plus récentes sont stockées dans le hash
' suppression des backup obsolètes et affichage du résumé
For Each oFolder In colFolders
bBackup = False
For Each strKey In oDic.Keys
arrTemp = Split (oDic (strKey), "~")
If arrTemp (1) = 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 = True
Exit For
End If
Next

If bBackup = False Then
' le backup est obsolète
' suppression du sous dossier (backup id)
oFolder.Delete (True)
WScript.Echo "Backup ID : " & oFolder.Name & " (deleted)"
WScript.Echo ""
End If
Next

--- Coupez ici : purgeBackupFolder.vbs ---

--
Gilles LAURENT
Me contacter : http://cerbermail.com/?zoTY7ZkLcD