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
| Merci pour ton script | J'ai corrigé 2 bugs :( avec beaucoup de mal , je suis completement | novice)
Merci de m'indiquer le fil de discussion dans lequel vous répondre. En effet, vous quittez le fil de discussion principal pour en ouvrir un autre, vous multipostez et j'en passe ... Dans le but d'améliorer la qualité des échanges, je vous invite à consulter les conseils qui vous sont proposés à cette adresse : http://support.microsoft.com/directory/worldwide/fr/newsgroup/regles.htm
Soyez respecteux des forums. Comme vous pourrez certainement le remarquer, toutes les réponses à un problème donné se situent dans un seul et unique fil. Cela permet d'une part de ne pas perturber les autres usagers et d'autre part de suivre avec attention les différents échanges.
-- Gilles LAURENT Me contacter : http://cerbermail.com/?zoTY7ZkLcD
"Jean-Luc" <tual_jl@hotmail.com> a écrit dans le message de
news:1159455510.604329.104450@m73g2000cwd.googlegroups.com
Bonsoir,
| Merci pour ton script
| J'ai corrigé 2 bugs :( avec beaucoup de mal , je suis completement
| novice)
Merci de m'indiquer le fil de discussion dans lequel vous répondre. En
effet, vous quittez le fil de discussion principal pour en ouvrir un
autre, vous multipostez et j'en passe ... Dans le but d'améliorer la
qualité des échanges, je vous invite à consulter les conseils qui vous
sont proposés à cette adresse :
http://support.microsoft.com/directory/worldwide/fr/newsgroup/regles.htm
Soyez respecteux des forums. Comme vous pourrez certainement le
remarquer, toutes les réponses à un problème donné se situent dans un
seul et unique fil. Cela permet d'une part de ne pas perturber les
autres usagers et d'autre part de suivre avec attention les différents
échanges.
--
Gilles LAURENT
Me contacter : http://cerbermail.com/?zoTY7ZkLcD
| Merci pour ton script | J'ai corrigé 2 bugs :( avec beaucoup de mal , je suis completement | novice)
Merci de m'indiquer le fil de discussion dans lequel vous répondre. En effet, vous quittez le fil de discussion principal pour en ouvrir un autre, vous multipostez et j'en passe ... Dans le but d'améliorer la qualité des échanges, je vous invite à consulter les conseils qui vous sont proposés à cette adresse : http://support.microsoft.com/directory/worldwide/fr/newsgroup/regles.htm
Soyez respecteux des forums. Comme vous pourrez certainement le remarquer, toutes les réponses à un problème donné se situent dans un seul et unique fil. Cela permet d'une part de ne pas perturber les autres usagers et d'autre part de suivre avec attention les différents échanges.
-- Gilles LAURENT Me contacter : http://cerbermail.com/?zoTY7ZkLcD
Jean-Luc
Désolé , j avais fait ma reponse dans l'autre poste "Sauvegarde des strategies (GPO) modifiées "
Ne voyant pas ma reponse apparaitre, je ne connais pas le delai de publication, j'ai "reposté". Milles excuses je ferai attention ; tu trouveras donc le fil de nos échanges dans le post :
"Sauvegarde des strategies (GPO) modifiées "
"Jean-Luc" a écrit dans le message de news:
Bonsoir,
| Merci pour ton script | J'ai corrigé 2 bugs :( avec beaucoup de mal , je suis completement | novice)
Merci de m'indiquer le fil de discussion dans lequel vous répondre. En effet, vous quittez le fil de discussion principal pour en ouvrir un autre, vous multipostez et j'en passe ... Dans le but d'améliorer la qualité des échanges, je vous invite à consulter les conseils qui v ous sont proposés à cette adresse : http://support.microsoft.com/directory/worldwide/fr/newsgroup/regles.htm
Soyez respecteux des forums. Comme vous pourrez certainement le remarquer, toutes les réponses à un problème donné se situent dan s un seul et unique fil. Cela permet d'une part de ne pas perturber les autres usagers et d'autre part de suivre avec attention les différents échanges.
-- Gilles LAURENT Me contacter : http://cerbermail.com/?zoTY7ZkLcD
Désolé ,
j avais fait ma reponse dans l'autre poste "Sauvegarde des strategies
(GPO) modifiées "
Ne voyant pas ma reponse apparaitre, je ne connais pas le delai de
publication,
j'ai "reposté".
Milles excuses je ferai attention ; tu trouveras donc le fil de nos
échanges dans le post :
"Sauvegarde des strategies (GPO) modifiées "
"Jean-Luc" <tual_jl@hotmail.com> a écrit dans le message de
news:1159455510.604329.104450@m73g2000cwd.googlegroups.com
Bonsoir,
| Merci pour ton script
| J'ai corrigé 2 bugs :( avec beaucoup de mal , je suis completement
| novice)
Merci de m'indiquer le fil de discussion dans lequel vous répondre. En
effet, vous quittez le fil de discussion principal pour en ouvrir un
autre, vous multipostez et j'en passe ... Dans le but d'améliorer la
qualité des échanges, je vous invite à consulter les conseils qui v ous
sont proposés à cette adresse :
http://support.microsoft.com/directory/worldwide/fr/newsgroup/regles.htm
Soyez respecteux des forums. Comme vous pourrez certainement le
remarquer, toutes les réponses à un problème donné se situent dan s un
seul et unique fil. Cela permet d'une part de ne pas perturber les
autres usagers et d'autre part de suivre avec attention les différents
échanges.
--
Gilles LAURENT
Me contacter : http://cerbermail.com/?zoTY7ZkLcD
Désolé , j avais fait ma reponse dans l'autre poste "Sauvegarde des strategies (GPO) modifiées "
Ne voyant pas ma reponse apparaitre, je ne connais pas le delai de publication, j'ai "reposté". Milles excuses je ferai attention ; tu trouveras donc le fil de nos échanges dans le post :
"Sauvegarde des strategies (GPO) modifiées "
"Jean-Luc" a écrit dans le message de news:
Bonsoir,
| Merci pour ton script | J'ai corrigé 2 bugs :( avec beaucoup de mal , je suis completement | novice)
Merci de m'indiquer le fil de discussion dans lequel vous répondre. En effet, vous quittez le fil de discussion principal pour en ouvrir un autre, vous multipostez et j'en passe ... Dans le but d'améliorer la qualité des échanges, je vous invite à consulter les conseils qui v ous sont proposés à cette adresse : http://support.microsoft.com/directory/worldwide/fr/newsgroup/regles.htm
Soyez respecteux des forums. Comme vous pourrez certainement le remarquer, toutes les réponses à un problème donné se situent dan s un seul et unique fil. Cela permet d'une part de ne pas perturber les autres usagers et d'autre part de suivre avec attention les différents échanges.
-- Gilles LAURENT Me contacter : http://cerbermail.com/?zoTY7ZkLcD
Gilles LAURENT
"Jean-Luc" a écrit dans le message de news:
Bonjour,
| Désolé , | j avais fait ma reponse dans l'autre poste "Sauvegarde des strategies | (GPO) modifiées "
[...]
D'accord. Je vous propose d'utiliser ce fil pour la suite de nos échanges.
Ci-dessous le script VBScript 'cleanBackupFolder.vbs' permettant de supprimer les dossiers "Backup Id" en double. 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).
Note : Après une sauvegarde totale suivie de l'exécution de ce script, la case à cocher "N'afficher que la dernière version des objets GPO" disponible dans la fenêtre de gestion des sauvegardes prend tout son sens.
+++ Environnement de test GPMC SP1 XP SP1/SP2 W2K3 SP1
+++ Pré requis Internet Explorer 5.x (Parser XMLDOM) Contrôle total sur les dossiers des sauvegardes
+++ Exemple >cscript cleanBackupFolder.vbs C:gpmcbackup
--- Coupez ici : cleanBackupFolder.vbs ---
Option Explicit
' déclaration des variables Dim oFs, oDic, oSh, oExec, oFolder Dim arrBackupId Dim strBkpFolder, strBackupId Dim i, j
' définition des constantes Const strFilter = "%comspec% /c dir /b /a:d /o:d /t:c "
' lecture du dossier des sauvegardes gpmc ' le dossier est passé comme argument strBkpFolder = WScript.Arguments (0)
' initialisation des objets set oFs = CreateObject ("Scripting.FileSystemObject") Set oDic = CreateObject ("Scripting.Dictionary") Set oSh = CreateObject ("WScript.Shell")
' lecture des backupId triés par ordre de création ' en cas de doublon, cela permet de conserver la sauvegarde ' la plus ancienne et donc supprimer la plus récente Set oExec = oSh.Exec (strFilter & _ Chr (34) & strBkpFolder & Chr (34)) arrBackupId = Split (oExec.StdOut.ReadAll, VBCrLf)
' recherche des doublons For i = 0 To UBound (arrBackupId) - 1 For j = i + 1 To UBound (arrBackupId) - 1 If _ Join (GetBkpInfo (arrBackupId (i)), VBCrLf) = _ Join (GetBkpInfo (arrBackupId (j)), VBCrLf) _ Then oDic (arrBackupId (j)) = _ Join (GetBkpInfo (arrBackupId (j)), VBCrLf) End If Next Next
' suppression des doublons For Each strBackupId In oDic.Keys Set oFolder = oFs.GetFolder (strBkpFolder & "" & strBackupId) oFolder.Delete (True) WScript.Echo strBackupId & " (deleted)" Next
' lecture du fichier gpreport.xml propre au backupId Function GetBkpInfo (strBackupId)
-- Gilles LAURENT Me contacter : http://cerbermail.com/?zoTY7ZkLcD
"Jean-Luc" <tual_jl@hotmail.com> a écrit dans le message de
news:1159522748.702963.173430@h48g2000cwc.googlegroups.com
Bonjour,
| Désolé ,
| j avais fait ma reponse dans l'autre poste "Sauvegarde des strategies
| (GPO) modifiées "
[...]
D'accord.
Je vous propose d'utiliser ce fil pour la suite de nos échanges.
Ci-dessous le script VBScript 'cleanBackupFolder.vbs' permettant de
supprimer les dossiers "Backup Id" en double. 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).
Note : Après une sauvegarde totale suivie de l'exécution de ce script,
la case à cocher "N'afficher que la dernière version des objets GPO"
disponible dans la fenêtre de gestion des sauvegardes prend tout son
sens.
+++ Environnement de test
GPMC SP1
XP SP1/SP2 W2K3 SP1
+++ Pré requis
Internet Explorer 5.x (Parser XMLDOM)
Contrôle total sur les dossiers des sauvegardes
+++ Exemple
>cscript cleanBackupFolder.vbs C:gpmcbackup
--- Coupez ici : cleanBackupFolder.vbs ---
Option Explicit
' déclaration des variables
Dim oFs, oDic, oSh, oExec, oFolder
Dim arrBackupId
Dim strBkpFolder, strBackupId
Dim i, j
' définition des constantes
Const strFilter = "%comspec% /c dir /b /a:d /o:d /t:c "
' lecture du dossier des sauvegardes gpmc
' le dossier est passé comme argument
strBkpFolder = WScript.Arguments (0)
' initialisation des objets
set oFs = CreateObject ("Scripting.FileSystemObject")
Set oDic = CreateObject ("Scripting.Dictionary")
Set oSh = CreateObject ("WScript.Shell")
' lecture des backupId triés par ordre de création
' en cas de doublon, cela permet de conserver la sauvegarde
' la plus ancienne et donc supprimer la plus récente
Set oExec = oSh.Exec (strFilter & _
Chr (34) & strBkpFolder & Chr (34))
arrBackupId = Split (oExec.StdOut.ReadAll, VBCrLf)
' recherche des doublons
For i = 0 To UBound (arrBackupId) - 1
For j = i + 1 To UBound (arrBackupId) - 1
If _
Join (GetBkpInfo (arrBackupId (i)), VBCrLf) = _
Join (GetBkpInfo (arrBackupId (j)), VBCrLf) _
Then
oDic (arrBackupId (j)) = _
Join (GetBkpInfo (arrBackupId (j)), VBCrLf)
End If
Next
Next
' suppression des doublons
For Each strBackupId In oDic.Keys
Set oFolder = oFs.GetFolder (strBkpFolder & "" & strBackupId)
oFolder.Delete (True)
WScript.Echo strBackupId & " (deleted)"
Next
' lecture du fichier gpreport.xml propre au backupId
Function GetBkpInfo (strBackupId)
| Désolé , | j avais fait ma reponse dans l'autre poste "Sauvegarde des strategies | (GPO) modifiées "
[...]
D'accord. Je vous propose d'utiliser ce fil pour la suite de nos échanges.
Ci-dessous le script VBScript 'cleanBackupFolder.vbs' permettant de supprimer les dossiers "Backup Id" en double. 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).
Note : Après une sauvegarde totale suivie de l'exécution de ce script, la case à cocher "N'afficher que la dernière version des objets GPO" disponible dans la fenêtre de gestion des sauvegardes prend tout son sens.
+++ Environnement de test GPMC SP1 XP SP1/SP2 W2K3 SP1
+++ Pré requis Internet Explorer 5.x (Parser XMLDOM) Contrôle total sur les dossiers des sauvegardes
+++ Exemple >cscript cleanBackupFolder.vbs C:gpmcbackup
--- Coupez ici : cleanBackupFolder.vbs ---
Option Explicit
' déclaration des variables Dim oFs, oDic, oSh, oExec, oFolder Dim arrBackupId Dim strBkpFolder, strBackupId Dim i, j
' définition des constantes Const strFilter = "%comspec% /c dir /b /a:d /o:d /t:c "
' lecture du dossier des sauvegardes gpmc ' le dossier est passé comme argument strBkpFolder = WScript.Arguments (0)
' initialisation des objets set oFs = CreateObject ("Scripting.FileSystemObject") Set oDic = CreateObject ("Scripting.Dictionary") Set oSh = CreateObject ("WScript.Shell")
' lecture des backupId triés par ordre de création ' en cas de doublon, cela permet de conserver la sauvegarde ' la plus ancienne et donc supprimer la plus récente Set oExec = oSh.Exec (strFilter & _ Chr (34) & strBkpFolder & Chr (34)) arrBackupId = Split (oExec.StdOut.ReadAll, VBCrLf)
' recherche des doublons For i = 0 To UBound (arrBackupId) - 1 For j = i + 1 To UBound (arrBackupId) - 1 If _ Join (GetBkpInfo (arrBackupId (i)), VBCrLf) = _ Join (GetBkpInfo (arrBackupId (j)), VBCrLf) _ Then oDic (arrBackupId (j)) = _ Join (GetBkpInfo (arrBackupId (j)), VBCrLf) End If Next Next
' suppression des doublons For Each strBackupId In oDic.Keys Set oFolder = oFs.GetFolder (strBkpFolder & "" & strBackupId) oFolder.Delete (True) WScript.Echo strBackupId & " (deleted)" Next
' lecture du fichier gpreport.xml propre au backupId Function GetBkpInfo (strBackupId)
-- Gilles LAURENT Me contacter : http://cerbermail.com/?zoTY7ZkLcD
Jean-Luc
Bonjour, Comme je te lai dit je suis completement novice , dans ton nouveau script je ne vois plus la consultation du champ "Modified Time"du fichier xml.; du coup je pense qu il y a une incomprehension.
Visiblement du fais un DIR trier par date de creation , mais la date de creation des repertoires BackupId est egal a la date (+ heure) du moment ou j'execute le script BackupAllGpo.wsf.
j ai 300 gpos , je fais une sauvegarde jour J heure H > 300 rep BackupId ayant une date de creation D, H on modifie 10 GPO , je fais une sauvegarde J+1 , H > 300 nouveaux rep BackupId ayant une date de creation J+1, H
au total j'ai 600 rep BackupID, je voudrais supprimer les 290 repertoires des GPO non modifiées.
Comme cela dans ma GPMC, SANS COCHER "aficher seulement la derniere version" je trie les gpo par nom et miracle je vois tout de suite les gpo ayant plusieurs versions.
et je peux donc restaurer une version anterieure si j ai un souci.
PS : Au fait on se tutoie , c'est + simple.
"Jean-Luc" a écrit dans le message de news:
Bonjour,
| Désolé , | j avais fait ma reponse dans l'autre poste "Sauvegarde des strategies | (GPO) modifiées "
[...]
D'accord. Je vous propose d'utiliser ce fil pour la suite de nos échanges.
Ci-dessous le script VBScript 'cleanBackupFolder.vbs' permettant de supprimer les dossiers "Backup Id" en double. 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).
Note : Après une sauvegarde totale suivie de l'exécution de ce script, la case à cocher "N'afficher que la dernière version des objets GPO" disponible dans la fenêtre de gestion des sauvegardes prend tout son sens.
+++ Environnement de test GPMC SP1 XP SP1/SP2 W2K3 SP1
+++ Pré requis Internet Explorer 5.x (Parser XMLDOM) Contrôle total sur les dossiers des sauvegardes
+++ Exemple >cscript cleanBackupFolder.vbs C:gpmcbackup
--- Coupez ici : cleanBackupFolder.vbs ---
Option Explicit
' déclaration des variables Dim oFs, oDic, oSh, oExec, oFolder Dim arrBackupId Dim strBkpFolder, strBackupId Dim i, j
' définition des constantes Const strFilter = "%comspec% /c dir /b /a:d /o:d /t:c "
' lecture du dossier des sauvegardes gpmc ' le dossier est passé comme argument strBkpFolder = WScript.Arguments (0)
' initialisation des objets set oFs = CreateObject ("Scripting.FileSystemObject") Set oDic = CreateObject ("Scripting.Dictionary") Set oSh = CreateObject ("WScript.Shell")
' lecture des backupId triés par ordre de création ' en cas de doublon, cela permet de conserver la sauvegarde ' la plus ancienne et donc supprimer la plus récente Set oExec = oSh.Exec (strFilter & _ Chr (34) & strBkpFolder & Chr (34)) arrBackupId = Split (oExec.StdOut.ReadAll, VBCrLf)
' recherche des doublons For i = 0 To UBound (arrBackupId) - 1 For j = i + 1 To UBound (arrBackupId) - 1 If _ Join (GetBkpInfo (arrBackupId (i)), VBCrLf) = _ Join (GetBkpInfo (arrBackupId (j)), VBCrLf) _ Then oDic (arrBackupId (j)) = _ Join (GetBkpInfo (arrBackupId (j)), VBCrLf) End If Next Next
' suppression des doublons For Each strBackupId In oDic.Keys Set oFolder = oFs.GetFolder (strBkpFolder & "" & strBackupId) oFolder.Delete (True) WScript.Echo strBackupId & " (deleted)" Next
' lecture du fichier gpreport.xml propre au backupId Function GetBkpInfo (strBackupId)
-- Gilles LAURENT Me contacter : http://cerbermail.com/?zoTY7ZkLcD
Bonjour,
Comme je te lai dit je suis completement novice ,
dans ton nouveau script je ne vois plus la consultation du champ
"Modified Time"du fichier xml.; du coup je pense qu il y a une
incomprehension.
Visiblement du fais un DIR trier par date de creation , mais la date de
creation des repertoires BackupId est egal a la date (+ heure) du
moment ou j'execute le script BackupAllGpo.wsf.
j ai 300 gpos , je fais une sauvegarde jour J heure H > 300 rep
BackupId ayant une date de creation D, H
on modifie 10 GPO , je fais une sauvegarde J+1 , H > 300 nouveaux rep
BackupId ayant une date de creation J+1, H
au total j'ai 600 rep BackupID, je voudrais supprimer les 290
repertoires des GPO non modifiées.
Comme cela dans ma GPMC, SANS COCHER "aficher seulement la derniere
version"
je trie les gpo par nom et miracle je vois tout de suite les gpo ayant
plusieurs versions.
et je peux donc restaurer une version anterieure si j ai un souci.
PS : Au fait on se tutoie , c'est + simple.
"Jean-Luc" <tual_jl@hotmail.com> a écrit dans le message de
news:1159522748.702963.173430@h48g2000cwc.googlegroups.com
Bonjour,
| Désolé ,
| j avais fait ma reponse dans l'autre poste "Sauvegarde des strategies
| (GPO) modifiées "
[...]
D'accord.
Je vous propose d'utiliser ce fil pour la suite de nos échanges.
Ci-dessous le script VBScript 'cleanBackupFolder.vbs' permettant de
supprimer les dossiers "Backup Id" en double. 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).
Note : Après une sauvegarde totale suivie de l'exécution de ce script,
la case à cocher "N'afficher que la dernière version des objets GPO"
disponible dans la fenêtre de gestion des sauvegardes prend tout son
sens.
+++ Environnement de test
GPMC SP1
XP SP1/SP2 W2K3 SP1
+++ Pré requis
Internet Explorer 5.x (Parser XMLDOM)
Contrôle total sur les dossiers des sauvegardes
+++ Exemple
>cscript cleanBackupFolder.vbs C:gpmcbackup
--- Coupez ici : cleanBackupFolder.vbs ---
Option Explicit
' déclaration des variables
Dim oFs, oDic, oSh, oExec, oFolder
Dim arrBackupId
Dim strBkpFolder, strBackupId
Dim i, j
' définition des constantes
Const strFilter = "%comspec% /c dir /b /a:d /o:d /t:c "
' lecture du dossier des sauvegardes gpmc
' le dossier est passé comme argument
strBkpFolder = WScript.Arguments (0)
' initialisation des objets
set oFs = CreateObject ("Scripting.FileSystemObject")
Set oDic = CreateObject ("Scripting.Dictionary")
Set oSh = CreateObject ("WScript.Shell")
' lecture des backupId triés par ordre de création
' en cas de doublon, cela permet de conserver la sauvegarde
' la plus ancienne et donc supprimer la plus récente
Set oExec = oSh.Exec (strFilter & _
Chr (34) & strBkpFolder & Chr (34))
arrBackupId = Split (oExec.StdOut.ReadAll, VBCrLf)
' recherche des doublons
For i = 0 To UBound (arrBackupId) - 1
For j = i + 1 To UBound (arrBackupId) - 1
If _
Join (GetBkpInfo (arrBackupId (i)), VBCrLf) = _
Join (GetBkpInfo (arrBackupId (j)), VBCrLf) _
Then
oDic (arrBackupId (j)) = _
Join (GetBkpInfo (arrBackupId (j)), VBCrLf)
End If
Next
Next
' suppression des doublons
For Each strBackupId In oDic.Keys
Set oFolder = oFs.GetFolder (strBkpFolder & "" & strBackupId)
oFolder.Delete (True)
WScript.Echo strBackupId & " (deleted)"
Next
' lecture du fichier gpreport.xml propre au backupId
Function GetBkpInfo (strBackupId)
Bonjour, Comme je te lai dit je suis completement novice , dans ton nouveau script je ne vois plus la consultation du champ "Modified Time"du fichier xml.; du coup je pense qu il y a une incomprehension.
Visiblement du fais un DIR trier par date de creation , mais la date de creation des repertoires BackupId est egal a la date (+ heure) du moment ou j'execute le script BackupAllGpo.wsf.
j ai 300 gpos , je fais une sauvegarde jour J heure H > 300 rep BackupId ayant une date de creation D, H on modifie 10 GPO , je fais une sauvegarde J+1 , H > 300 nouveaux rep BackupId ayant une date de creation J+1, H
au total j'ai 600 rep BackupID, je voudrais supprimer les 290 repertoires des GPO non modifiées.
Comme cela dans ma GPMC, SANS COCHER "aficher seulement la derniere version" je trie les gpo par nom et miracle je vois tout de suite les gpo ayant plusieurs versions.
et je peux donc restaurer une version anterieure si j ai un souci.
PS : Au fait on se tutoie , c'est + simple.
"Jean-Luc" a écrit dans le message de news:
Bonjour,
| Désolé , | j avais fait ma reponse dans l'autre poste "Sauvegarde des strategies | (GPO) modifiées "
[...]
D'accord. Je vous propose d'utiliser ce fil pour la suite de nos échanges.
Ci-dessous le script VBScript 'cleanBackupFolder.vbs' permettant de supprimer les dossiers "Backup Id" en double. 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).
Note : Après une sauvegarde totale suivie de l'exécution de ce script, la case à cocher "N'afficher que la dernière version des objets GPO" disponible dans la fenêtre de gestion des sauvegardes prend tout son sens.
+++ Environnement de test GPMC SP1 XP SP1/SP2 W2K3 SP1
+++ Pré requis Internet Explorer 5.x (Parser XMLDOM) Contrôle total sur les dossiers des sauvegardes
+++ Exemple >cscript cleanBackupFolder.vbs C:gpmcbackup
--- Coupez ici : cleanBackupFolder.vbs ---
Option Explicit
' déclaration des variables Dim oFs, oDic, oSh, oExec, oFolder Dim arrBackupId Dim strBkpFolder, strBackupId Dim i, j
' définition des constantes Const strFilter = "%comspec% /c dir /b /a:d /o:d /t:c "
' lecture du dossier des sauvegardes gpmc ' le dossier est passé comme argument strBkpFolder = WScript.Arguments (0)
' initialisation des objets set oFs = CreateObject ("Scripting.FileSystemObject") Set oDic = CreateObject ("Scripting.Dictionary") Set oSh = CreateObject ("WScript.Shell")
' lecture des backupId triés par ordre de création ' en cas de doublon, cela permet de conserver la sauvegarde ' la plus ancienne et donc supprimer la plus récente Set oExec = oSh.Exec (strFilter & _ Chr (34) & strBkpFolder & Chr (34)) arrBackupId = Split (oExec.StdOut.ReadAll, VBCrLf)
' recherche des doublons For i = 0 To UBound (arrBackupId) - 1 For j = i + 1 To UBound (arrBackupId) - 1 If _ Join (GetBkpInfo (arrBackupId (i)), VBCrLf) = _ Join (GetBkpInfo (arrBackupId (j)), VBCrLf) _ Then oDic (arrBackupId (j)) = _ Join (GetBkpInfo (arrBackupId (j)), VBCrLf) End If Next Next
' suppression des doublons For Each strBackupId In oDic.Keys Set oFolder = oFs.GetFolder (strBkpFolder & "" & strBackupId) oFolder.Delete (True) WScript.Echo strBackupId & " (deleted)" Next
' lecture du fichier gpreport.xml propre au backupId Function GetBkpInfo (strBackupId)
-- Gilles LAURENT Me contacter : http://cerbermail.com/?zoTY7ZkLcD
Gilles LAURENT
"Jean-Luc" a écrit dans le message de news: | Bonjour,
Bonjour,
| dans ton nouveau script je ne vois plus la consultation du champ | "Modified Time"du fichier xml.; du coup je pense qu il y a une | incomprehension.
La consultation du champ "ModifiedTime" se situe dans la fonction GetBkpInfo
| Visiblement du fais un DIR trier par date de creation , mais la date | de creation des repertoires BackupId est egal a la date (+ heure) du | moment ou j'execute le script BackupAllGpo.wsf.
Exact
| j ai 300 gpos , je fais une sauvegarde jour J heure H > 300 rep | BackupId ayant une date de creation D, H | on modifie 10 GPO , je fais une sauvegarde J+1 , H > 300 nouveaux rep | BackupId ayant une date de creation J+1, H | au total j'ai 600 rep BackupID, je voudrais supprimer les 290 | repertoires des GPO non modifiées.
C'est exactement ce que fait le script ;-)
| Comme cela dans ma GPMC, SANS COCHER "aficher seulement la derniere | version" | je trie les gpo par nom et miracle je vois tout de suite les gpo ayant | plusieurs versions. | et je peux donc restaurer une version anterieure si j ai un souci.
C'est justement pour cela que je disais :
<quote> Note : Après une sauvegarde totale suivie de l'exécution de ce script, la case à cocher "N'afficher que la dernière version des objets GPO" disponible dans la fenêtre de gestion des sauvegardes prend tout son sens. </quote>
Au fait, avez-vous testé le script ?
-- Gilles LAURENT Me contacter : http://cerbermail.com/?zoTY7ZkLcD
"Jean-Luc" <tual_jl@hotmail.com> a écrit dans le message de
news:1159531136.771136.110710@e3g2000cwe.googlegroups.com
| Bonjour,
Bonjour,
| dans ton nouveau script je ne vois plus la consultation du champ
| "Modified Time"du fichier xml.; du coup je pense qu il y a une
| incomprehension.
La consultation du champ "ModifiedTime" se situe dans la fonction
GetBkpInfo
| Visiblement du fais un DIR trier par date de creation , mais la date
| de creation des repertoires BackupId est egal a la date (+ heure) du
| moment ou j'execute le script BackupAllGpo.wsf.
Exact
| j ai 300 gpos , je fais une sauvegarde jour J heure H > 300 rep
| BackupId ayant une date de creation D, H
| on modifie 10 GPO , je fais une sauvegarde J+1 , H > 300 nouveaux rep
| BackupId ayant une date de creation J+1, H
| au total j'ai 600 rep BackupID, je voudrais supprimer les 290
| repertoires des GPO non modifiées.
C'est exactement ce que fait le script ;-)
| Comme cela dans ma GPMC, SANS COCHER "aficher seulement la derniere
| version"
| je trie les gpo par nom et miracle je vois tout de suite les gpo ayant
| plusieurs versions.
| et je peux donc restaurer une version anterieure si j ai un souci.
C'est justement pour cela que je disais :
<quote>
Note : Après une sauvegarde totale suivie de l'exécution de ce script,
la case à cocher "N'afficher que la dernière version des objets GPO"
disponible dans la fenêtre de gestion des sauvegardes prend tout son
sens.
</quote>
Au fait, avez-vous testé le script ?
--
Gilles LAURENT
Me contacter : http://cerbermail.com/?zoTY7ZkLcD
"Jean-Luc" a écrit dans le message de news: | Bonjour,
Bonjour,
| dans ton nouveau script je ne vois plus la consultation du champ | "Modified Time"du fichier xml.; du coup je pense qu il y a une | incomprehension.
La consultation du champ "ModifiedTime" se situe dans la fonction GetBkpInfo
| Visiblement du fais un DIR trier par date de creation , mais la date | de creation des repertoires BackupId est egal a la date (+ heure) du | moment ou j'execute le script BackupAllGpo.wsf.
Exact
| j ai 300 gpos , je fais une sauvegarde jour J heure H > 300 rep | BackupId ayant une date de creation D, H | on modifie 10 GPO , je fais une sauvegarde J+1 , H > 300 nouveaux rep | BackupId ayant une date de creation J+1, H | au total j'ai 600 rep BackupID, je voudrais supprimer les 290 | repertoires des GPO non modifiées.
C'est exactement ce que fait le script ;-)
| Comme cela dans ma GPMC, SANS COCHER "aficher seulement la derniere | version" | je trie les gpo par nom et miracle je vois tout de suite les gpo ayant | plusieurs versions. | et je peux donc restaurer une version anterieure si j ai un souci.
C'est justement pour cela que je disais :
<quote> Note : Après une sauvegarde totale suivie de l'exécution de ce script, la case à cocher "N'afficher que la dernière version des objets GPO" disponible dans la fenêtre de gestion des sauvegardes prend tout son sens. </quote>
Au fait, avez-vous testé le script ?
-- Gilles LAURENT Me contacter : http://cerbermail.com/?zoTY7ZkLcD
Jean-Luc
Bonjour , j'ai testé ton script je l'ai tourné pendant 10 minutes , aucun de mes dossiers n 'a ete supprimé. !!!
As tu pu le tester de ton cote ?
"Jean-Luc" a écrit dans le message de news: | Bonjour,
Bonjour,
| dans ton nouveau script je ne vois plus la consultation du champ | "Modified Time"du fichier xml.; du coup je pense qu il y a une | incomprehension.
La consultation du champ "ModifiedTime" se situe dans la fonction GetBkpInfo
| Visiblement du fais un DIR trier par date de creation , mais la date | de creation des repertoires BackupId est egal a la date (+ heure) du | moment ou j'execute le script BackupAllGpo.wsf.
Exact
| j ai 300 gpos , je fais une sauvegarde jour J heure H > 300 rep | BackupId ayant une date de creation D, H | on modifie 10 GPO , je fais une sauvegarde J+1 , H > 300 nouveaux rep | BackupId ayant une date de creation J+1, H | au total j'ai 600 rep BackupID, je voudrais supprimer les 290 | repertoires des GPO non modifiées.
C'est exactement ce que fait le script ;-)
| Comme cela dans ma GPMC, SANS COCHER "aficher seulement la derniere | version" | je trie les gpo par nom et miracle je vois tout de suite les gpo ayant | plusieurs versions. | et je peux donc restaurer une version anterieure si j ai un souci.
C'est justement pour cela que je disais :
<quote> Note : Après une sauvegarde totale suivie de l'exécution de ce script, la case à cocher "N'afficher que la dernière version des objets GPO" disponible dans la fenêtre de gestion des sauvegardes prend tout son sens. </quote>
Au fait, avez-vous testé le script ?
-- Gilles LAURENT Me contacter : http://cerbermail.com/?zoTY7ZkLcD
Bonjour ,
j'ai testé ton script je l'ai tourné pendant 10 minutes , aucun de
mes dossiers n 'a ete supprimé. !!!
As tu pu le tester de ton cote ?
"Jean-Luc" <tual_jl@hotmail.com> a écrit dans le message de
news:1159531136.771136.110710@e3g2000cwe.googlegroups.com
| Bonjour,
Bonjour,
| dans ton nouveau script je ne vois plus la consultation du champ
| "Modified Time"du fichier xml.; du coup je pense qu il y a une
| incomprehension.
La consultation du champ "ModifiedTime" se situe dans la fonction
GetBkpInfo
| Visiblement du fais un DIR trier par date de creation , mais la date
| de creation des repertoires BackupId est egal a la date (+ heure) du
| moment ou j'execute le script BackupAllGpo.wsf.
Exact
| j ai 300 gpos , je fais une sauvegarde jour J heure H > 300 rep
| BackupId ayant une date de creation D, H
| on modifie 10 GPO , je fais une sauvegarde J+1 , H > 300 nouveaux rep
| BackupId ayant une date de creation J+1, H
| au total j'ai 600 rep BackupID, je voudrais supprimer les 290
| repertoires des GPO non modifiées.
C'est exactement ce que fait le script ;-)
| Comme cela dans ma GPMC, SANS COCHER "aficher seulement la derniere
| version"
| je trie les gpo par nom et miracle je vois tout de suite les gpo ayant
| plusieurs versions.
| et je peux donc restaurer une version anterieure si j ai un souci.
C'est justement pour cela que je disais :
<quote>
Note : Après une sauvegarde totale suivie de l'exécution de ce script,
la case à cocher "N'afficher que la dernière version des objets GPO"
disponible dans la fenêtre de gestion des sauvegardes prend tout son
sens.
</quote>
Au fait, avez-vous testé le script ?
--
Gilles LAURENT
Me contacter : http://cerbermail.com/?zoTY7ZkLcD
Bonjour , j'ai testé ton script je l'ai tourné pendant 10 minutes , aucun de mes dossiers n 'a ete supprimé. !!!
As tu pu le tester de ton cote ?
"Jean-Luc" a écrit dans le message de news: | Bonjour,
Bonjour,
| dans ton nouveau script je ne vois plus la consultation du champ | "Modified Time"du fichier xml.; du coup je pense qu il y a une | incomprehension.
La consultation du champ "ModifiedTime" se situe dans la fonction GetBkpInfo
| Visiblement du fais un DIR trier par date de creation , mais la date | de creation des repertoires BackupId est egal a la date (+ heure) du | moment ou j'execute le script BackupAllGpo.wsf.
Exact
| j ai 300 gpos , je fais une sauvegarde jour J heure H > 300 rep | BackupId ayant une date de creation D, H | on modifie 10 GPO , je fais une sauvegarde J+1 , H > 300 nouveaux rep | BackupId ayant une date de creation J+1, H | au total j'ai 600 rep BackupID, je voudrais supprimer les 290 | repertoires des GPO non modifiées.
C'est exactement ce que fait le script ;-)
| Comme cela dans ma GPMC, SANS COCHER "aficher seulement la derniere | version" | je trie les gpo par nom et miracle je vois tout de suite les gpo ayant | plusieurs versions. | et je peux donc restaurer une version anterieure si j ai un souci.
C'est justement pour cela que je disais :
<quote> Note : Après une sauvegarde totale suivie de l'exécution de ce script, la case à cocher "N'afficher que la dernière version des objets GPO" disponible dans la fenêtre de gestion des sauvegardes prend tout son sens. </quote>
Au fait, avez-vous testé le script ?
-- Gilles LAURENT Me contacter : http://cerbermail.com/?zoTY7ZkLcD
Gilles LAURENT
"Jean-Luc" a écrit dans le message de news: | Bonjour ,
Bonjour,
| j'ai testé ton script je l'ai tourné pendant 10 minutes , aucun de | mes dossiers n 'a ete supprimé. !!! | | As tu pu le tester de ton cote ?
Oui, testé avec 80 GPO 1- cscript backupAllGpos.wsf => 80 backupId dans c:bkpgpo 2- modification de 10 GPO via GPMC 3- cscript backupAllGpos.wsf => 160 backupId dans c:bkpgpo 4- cscript cleanBackupFolder.vbs c:bkpgpo => 90 backupId dans c:bkpgpo => Temps de traitement : 1 minute et 35 secondes
Est-ce que le script avait "rendu la main" ? La suppression des backupId n'intervient qu'à la fin du traitement Pouvez-vous faire le test sur une dizaine de GPO ?
-- Gilles LAURENT Me contacter : http://cerbermail.com/?zoTY7ZkLcD
"Jean-Luc" <tual_jl@hotmail.com> a écrit dans le message de
news:1159777782.314626.92540@m73g2000cwd.googlegroups.com
| Bonjour ,
Bonjour,
| j'ai testé ton script je l'ai tourné pendant 10 minutes , aucun de
| mes dossiers n 'a ete supprimé. !!!
|
| As tu pu le tester de ton cote ?
Oui, testé avec 80 GPO
1- cscript backupAllGpos.wsf
=> 80 backupId dans c:bkpgpo
2- modification de 10 GPO via GPMC
3- cscript backupAllGpos.wsf
=> 160 backupId dans c:bkpgpo
4- cscript cleanBackupFolder.vbs c:bkpgpo
=> 90 backupId dans c:bkpgpo
=> Temps de traitement : 1 minute et 35 secondes
Est-ce que le script avait "rendu la main" ?
La suppression des backupId n'intervient qu'à la fin du traitement
Pouvez-vous faire le test sur une dizaine de GPO ?
--
Gilles LAURENT
Me contacter : http://cerbermail.com/?zoTY7ZkLcD
"Jean-Luc" a écrit dans le message de news: | Bonjour ,
Bonjour,
| j'ai testé ton script je l'ai tourné pendant 10 minutes , aucun de | mes dossiers n 'a ete supprimé. !!! | | As tu pu le tester de ton cote ?
Oui, testé avec 80 GPO 1- cscript backupAllGpos.wsf => 80 backupId dans c:bkpgpo 2- modification de 10 GPO via GPMC 3- cscript backupAllGpos.wsf => 160 backupId dans c:bkpgpo 4- cscript cleanBackupFolder.vbs c:bkpgpo => 90 backupId dans c:bkpgpo => Temps de traitement : 1 minute et 35 secondes
Est-ce que le script avait "rendu la main" ? La suppression des backupId n'intervient qu'à la fin du traitement Pouvez-vous faire le test sur une dizaine de GPO ?
-- Gilles LAURENT Me contacter : http://cerbermail.com/?zoTY7ZkLcD
Jean-Luc
J'ai testé avec succès ton script , 2h30 pour supprimer 587 dossiers
j' ai ajouter les 2 scripts ( le tien avec le BackupAlGPOs.wsf)dans un batch pour logger les GPO sauvegardés et les supprimés.
Merci
"Jean-Luc" a écrit dans le message de news: | Bonjour ,
Bonjour,
| j'ai testé ton script je l'ai tourné pendant 10 minutes , aucun de | mes dossiers n 'a ete supprimé. !!! | | As tu pu le tester de ton cote ?
Oui, testé avec 80 GPO 1- cscript backupAllGpos.wsf => 80 backupId dans c:bkpgpo 2- modification de 10 GPO via GPMC 3- cscript backupAllGpos.wsf => 160 backupId dans c:bkpgpo 4- cscript cleanBackupFolder.vbs c:bkpgpo => 90 backupId dans c:bkpgpo => Temps de traitement : 1 minute et 35 secondes
Est-ce que le script avait "rendu la main" ? La suppression des backupId n'intervient qu'à la fin du traitement Pouvez-vous faire le test sur une dizaine de GPO ?
-- Gilles LAURENT Me contacter : http://cerbermail.com/?zoTY7ZkLcD
J'ai testé avec succès ton script ,
2h30 pour supprimer 587 dossiers
j' ai ajouter les 2 scripts ( le tien avec le BackupAlGPOs.wsf)dans un
batch pour logger les GPO sauvegardés et les supprimés.
Merci
"Jean-Luc" <tual_jl@hotmail.com> a écrit dans le message de
news:1159777782.314626.92540@m73g2000cwd.googlegroups.com
| Bonjour ,
Bonjour,
| j'ai testé ton script je l'ai tourné pendant 10 minutes , aucun de
| mes dossiers n 'a ete supprimé. !!!
|
| As tu pu le tester de ton cote ?
Oui, testé avec 80 GPO
1- cscript backupAllGpos.wsf
=> 80 backupId dans c:bkpgpo
2- modification de 10 GPO via GPMC
3- cscript backupAllGpos.wsf
=> 160 backupId dans c:bkpgpo
4- cscript cleanBackupFolder.vbs c:bkpgpo
=> 90 backupId dans c:bkpgpo
=> Temps de traitement : 1 minute et 35 secondes
Est-ce que le script avait "rendu la main" ?
La suppression des backupId n'intervient qu'à la fin du traitement
Pouvez-vous faire le test sur une dizaine de GPO ?
--
Gilles LAURENT
Me contacter : http://cerbermail.com/?zoTY7ZkLcD
J'ai testé avec succès ton script , 2h30 pour supprimer 587 dossiers
j' ai ajouter les 2 scripts ( le tien avec le BackupAlGPOs.wsf)dans un batch pour logger les GPO sauvegardés et les supprimés.
Merci
"Jean-Luc" a écrit dans le message de news: | Bonjour ,
Bonjour,
| j'ai testé ton script je l'ai tourné pendant 10 minutes , aucun de | mes dossiers n 'a ete supprimé. !!! | | As tu pu le tester de ton cote ?
Oui, testé avec 80 GPO 1- cscript backupAllGpos.wsf => 80 backupId dans c:bkpgpo 2- modification de 10 GPO via GPMC 3- cscript backupAllGpos.wsf => 160 backupId dans c:bkpgpo 4- cscript cleanBackupFolder.vbs c:bkpgpo => 90 backupId dans c:bkpgpo => Temps de traitement : 1 minute et 35 secondes
Est-ce que le script avait "rendu la main" ? La suppression des backupId n'intervient qu'à la fin du traitement Pouvez-vous faire le test sur une dizaine de GPO ?
-- Gilles LAURENT Me contacter : http://cerbermail.com/?zoTY7ZkLcD
Gilles LAURENT
"Jean-Luc" a écrit dans le message de news:
Bonjour,
| J'ai testé avec succès ton script
Merci pour ce retour.
| 2h30 pour supprimer 587 dossiers
Maintenant que le fonctionnement de principe est vérifié, je vais optimiser la solution.
-- Gilles LAURENT Me contacter : http://cerbermail.com/?zoTY7ZkLcD
"Jean-Luc" <tual_jl@hotmail.com> a écrit dans le message de
news:1159945218.367164.7900@b28g2000cwb.googlegroups.com
Bonjour,
| J'ai testé avec succès ton script
Merci pour ce retour.
| 2h30 pour supprimer 587 dossiers
Maintenant que le fonctionnement de principe est vérifié, je vais
optimiser la solution.
--
Gilles LAURENT
Me contacter : http://cerbermail.com/?zoTY7ZkLcD
Maintenant que le fonctionnement de principe est vérifié, je vais optimiser la solution.
-- Gilles LAURENT Me contacter : http://cerbermail.com/?zoTY7ZkLcD
Gilles LAURENT
"Gilles LAURENT" a écrit dans le message de news:
Ci-dessous une version optimisée. Testé avec 80 GPO (160 backupId) Temps de traitement : 20 s (suppression de 70 dossiers)
Je serai intéressé de connaitre le temps de traitement pour de gros volumes.
--- Coupez ici : cleanBackupFolder.vbs ---
Option Explicit
' déclaration des variables Dim oFs, oBkpInfo, oDic, oSh, oExec, oFolder, oXml Dim arrBackupId Dim strBkpFolder, strBackupId Dim i, j
' définition des constantes Const strFilter = "%comspec% /c dir /b /a:d /o:d /t:c "
' lecture du dossier des sauvegardes gpmc ' le dossier est passé comme argument strBkpFolder = WScript.Arguments (0)
' initialisation des objets set oFs = CreateObject ("Scripting.FileSystemObject") Set oBkpInfo = CreateObject ("Scripting.Dictionary") Set oDic = CreateObject ("Scripting.Dictionary") Set oSh = CreateObject ("WScript.Shell") set oXml = CreateObject ("Microsoft.XMLDOM")
' lecture des backupId triés par ordre de création ' en cas de doublon, cela permet de conserver la sauvegarde ' la plus ancienne et donc supprimer la plus récente Set oExec = oSh.Exec (strFilter & _ Chr (34) & strBkpFolder & Chr (34)) arrBackupId = Split (oExec.StdOut.ReadAll, VBCrLf)
' lecture des fichiers gpreport.xml ' et stockage des informations dans un hash For i = 0 To UBound (arrBackupId) - 1 oBkpInfo (arrBackupId (i)) = GetBkpInfo (arrBackupId (i)) Next
' recherche des doublons For i = 0 To UBound (arrBackupId) - 1 For j = i + 1 To UBound (arrBackupId) - 1 If _ oBkpInfo (arrBackupId (i)) = _ oBkpInfo (arrBackupId (j)) _ Then oDic (arrBackupId (j)) = oBkpInfo (arrBackupId (j)) End If Next Next
' suppression des doublons For Each strBackupId In oDic.Keys Set oFolder = oFs.GetFolder (strBkpFolder & "" & strBackupId) oFolder.Delete (True) WScript.Echo strBackupId & " (deleted)" Next
' lecture du fichier gpreport.xml Function GetBkpInfo (strBackupId)
-- Gilles LAURENT Me contacter : http://cerbermail.com/?zoTY7ZkLcD
"Gilles LAURENT" <glsft@free.fr> a écrit dans le message de
news:Ow31SP45GHA.756@TK2MSFTNGP05.phx.gbl
Ci-dessous une version optimisée.
Testé avec 80 GPO (160 backupId)
Temps de traitement : 20 s (suppression de 70 dossiers)
Je serai intéressé de connaitre le temps de traitement pour de gros
volumes.
--- Coupez ici : cleanBackupFolder.vbs ---
Option Explicit
' déclaration des variables
Dim oFs, oBkpInfo, oDic, oSh, oExec, oFolder, oXml
Dim arrBackupId
Dim strBkpFolder, strBackupId
Dim i, j
' définition des constantes
Const strFilter = "%comspec% /c dir /b /a:d /o:d /t:c "
' lecture du dossier des sauvegardes gpmc
' le dossier est passé comme argument
strBkpFolder = WScript.Arguments (0)
' initialisation des objets
set oFs = CreateObject ("Scripting.FileSystemObject")
Set oBkpInfo = CreateObject ("Scripting.Dictionary")
Set oDic = CreateObject ("Scripting.Dictionary")
Set oSh = CreateObject ("WScript.Shell")
set oXml = CreateObject ("Microsoft.XMLDOM")
' lecture des backupId triés par ordre de création
' en cas de doublon, cela permet de conserver la sauvegarde
' la plus ancienne et donc supprimer la plus récente
Set oExec = oSh.Exec (strFilter & _
Chr (34) & strBkpFolder & Chr (34))
arrBackupId = Split (oExec.StdOut.ReadAll, VBCrLf)
' lecture des fichiers gpreport.xml
' et stockage des informations dans un hash
For i = 0 To UBound (arrBackupId) - 1
oBkpInfo (arrBackupId (i)) = GetBkpInfo (arrBackupId (i))
Next
' recherche des doublons
For i = 0 To UBound (arrBackupId) - 1
For j = i + 1 To UBound (arrBackupId) - 1
If _
oBkpInfo (arrBackupId (i)) = _
oBkpInfo (arrBackupId (j)) _
Then
oDic (arrBackupId (j)) = oBkpInfo (arrBackupId (j))
End If
Next
Next
' suppression des doublons
For Each strBackupId In oDic.Keys
Set oFolder = oFs.GetFolder (strBkpFolder & "" & strBackupId)
oFolder.Delete (True)
WScript.Echo strBackupId & " (deleted)"
Next
' lecture du fichier gpreport.xml
Function GetBkpInfo (strBackupId)
Ci-dessous une version optimisée. Testé avec 80 GPO (160 backupId) Temps de traitement : 20 s (suppression de 70 dossiers)
Je serai intéressé de connaitre le temps de traitement pour de gros volumes.
--- Coupez ici : cleanBackupFolder.vbs ---
Option Explicit
' déclaration des variables Dim oFs, oBkpInfo, oDic, oSh, oExec, oFolder, oXml Dim arrBackupId Dim strBkpFolder, strBackupId Dim i, j
' définition des constantes Const strFilter = "%comspec% /c dir /b /a:d /o:d /t:c "
' lecture du dossier des sauvegardes gpmc ' le dossier est passé comme argument strBkpFolder = WScript.Arguments (0)
' initialisation des objets set oFs = CreateObject ("Scripting.FileSystemObject") Set oBkpInfo = CreateObject ("Scripting.Dictionary") Set oDic = CreateObject ("Scripting.Dictionary") Set oSh = CreateObject ("WScript.Shell") set oXml = CreateObject ("Microsoft.XMLDOM")
' lecture des backupId triés par ordre de création ' en cas de doublon, cela permet de conserver la sauvegarde ' la plus ancienne et donc supprimer la plus récente Set oExec = oSh.Exec (strFilter & _ Chr (34) & strBkpFolder & Chr (34)) arrBackupId = Split (oExec.StdOut.ReadAll, VBCrLf)
' lecture des fichiers gpreport.xml ' et stockage des informations dans un hash For i = 0 To UBound (arrBackupId) - 1 oBkpInfo (arrBackupId (i)) = GetBkpInfo (arrBackupId (i)) Next
' recherche des doublons For i = 0 To UBound (arrBackupId) - 1 For j = i + 1 To UBound (arrBackupId) - 1 If _ oBkpInfo (arrBackupId (i)) = _ oBkpInfo (arrBackupId (j)) _ Then oDic (arrBackupId (j)) = oBkpInfo (arrBackupId (j)) End If Next Next
' suppression des doublons For Each strBackupId In oDic.Keys Set oFolder = oFs.GetFolder (strBkpFolder & "" & strBackupId) oFolder.Delete (True) WScript.Echo strBackupId & " (deleted)" Next
' lecture du fichier gpreport.xml Function GetBkpInfo (strBackupId)