Sauvegarder et restaurer vos GPO en ligne de commande.

Dans ce tutoriel nous verrons comment sauvegarder et restaurer efficacement les stratégies de groupe (GPO) de votre environnement. GPMC, alias Group Policy Management Console de Microsoft, est un outil fort sympathique, et il regorge de scripts cachés pour vous aider dans cette tâche.

La première chose à faire est d’installer GPMC, vous pouvez consulter un tutoriel ici .

Lorsque vous installez la console de gestion des stratégies de groupe, un ensemble de scripts sont  installés dans le répertoire %programfiles%\gpmc\scripts.

Aujourd’hui nous allons étudier en particulier 3 scripts : ListAllGPOs.wsf , BackupAllGPOs.wsf et RestoreGPO.wsf .

  • ListAllGPOs.wsf : Affiche tous les objets de stratégie de groupe dans le domaine spécifié.
  • BackupAllGPOs.wsf  : Sauvegarde tous les objets de stratégie de groupe dans le dossier spécifié.
  • RestoreGPO.wsf  : Restaure tous les objets de stratégie de groupe stockés à un emplacement spécifique du système de fichiers.

Pour exécuter ces scripts en ligne de commande ou dans un script batch, vous devez utiliser le mot clé : cscript.

Voyons tout d’abord comment lister toutes les GPO d’un domaine. Aller dans le répertoire c:\program files\gpmc\scripts et exécuter la commande suivante : cscript.exe ListAllGPOs.wsf .

Toutes les GPO actives sur mon domaine sont listées ici.

Vous pouvez les retrouver en allant dans Démarrer → Programmes → Outils d’administration → Gestion des stratégies de groupe.

Voyons maintenant comment sauvegarder toutes ces GPO.

Pour effectuer une sauvegarde, utiliser la commande suivante :

cscript.exe backupallgpos.wsf C:\Mon dossier\ /Domain:mondomaine.local

Si vous consulter votre répertoire de sauvegarde vous devriez avoir quelque choses de ressemblant :

Le but est d’essayer d’automatiser cette tâche afin de l’exécuter tous les jours ou toutes les semaines par exemple. Nous allons donc créer un script batch puis créer une tâche planifiée afin de l’exécuter de manière automatique.

Voici une idée de script :

@ECHO OFF
 @ECHO ------------------------------------------------------------- >> c:\Script\Logs\backup_gpo.log
 @ECHO Heure avant sauvegarde GPO: %DATE% - %time:~0,3%%time:~3,3%%time:~0,2% >> c:\Script\Logs\backup_gpo.log
 ECHO SUPPRESSION DES ANCIENNES SAUVEGARDE
 ECHO.
 ECHO.
 rd Backup_GPO /S /Q
 ECHO CREATION DU REPERTOIRE DE SAUVEGARDE DES GPO
 md c:\Script\Backup_Gpo
 ECHO.
 ECHO.
 ECHO SAUVERGARDE DES GPO EN COURS.....
 @ECHO. >> c:\Script\Logs\backup_gpo.log
 @cd\
 @cd C:\Program Files\GPMC\Scripts\
 @cscript.exe BackupAllGPOs.wsf C:\Script\Backup_Gpo /Domain:quick-tutoriel.com >> c:\Script\Logs\backup_gpo.log
 @ECHO. >> c:\Script\Logs\compress_dhcp.log
 @ECHO Heure après sauvegarde GPO %DATE% - %time:~0,3%%time:~3,3%%time:~0,2% >> c:\Script\Logs\backup_gpo.log
 @ECHO. >> c:\Script\Logs\backup_gpo.log
 @ECHO. >> c:\Script\Logs\backup_gpo.log

  • 1: Commande permettant d’écrire dans un fichier log l’heure de début d’exécution du script.
  • 2: Il est nécessaire de supprimer à chaque sauvegarde, le répertoire ou sont stockées les GPO car Windows créé à chaque sauvegarde des répertoires avec des ID différents. Si vous voulez garder un historique il vous suffit de modifier le script et de copier le contenu du répertoire dans un autre emplacement avant la suppression.
  • 3: Exécution de la commande de sauvegarde
02/02/2017 : Voici une version du script de backup ci-dessus modifiée par SAMUSHACK (Merci à lui) qui conserve 2 backups :
@echo off

set domaine=domain.lan 
set script_backup_gpo_wsf=C:\tools\GPMC_Script_Samples\BackupAllGPOs.wsf 
set dossier_sauvegarde=C:\tools\Sauvegarde_GPO\Scripts_Sorties 
set logs=C:\tools\Sauvegarde_GPO\Scripts_Logs\Sauvegarde_GPO.log


@CD /D C:\ 
@echo Début de la sauvegarde GPO: %DATE% – %time:~0,3%%time:~3,3%%time:~0,2% >> "%logs%" 
@echo.>> "%logs%" 
echo DEPLACEMENT DE LA DERNIERE SAUVEGARDE ... 
RD /S /Q "%dossier_sauvegarde%\Avant_Derniere_Sauvegarde" 
MOVE /Y "%dossier_sauvegarde%\Derniere_Sauvegarde" "%dossier_sauvegarde%\Avant_Derniere_Sauvegarde" 
MKDIR "%dossier_sauvegarde%\Derniere_Sauvegarde"

echo. 
echo SAUVERGARDE DES GPO EN COURS ... 
@cscript.exe "%script_backup_gpo_wsf%" "%dossier_sauvegarde%\Derniere_Sauvegarde" /Domain:"%domaine%" >> "%logs%" 
@echo Fin de la sauvegarde GPO: %DATE% – %time:~0,3%%time:~3,3%%time:~0,2% >> "%logs%"

rem ——— Ci-dessous un séparateur dans le log entre les sauvegardes ———

@echo.>> "%logs%" 
@echo ————————————————————————— >> "%logs%" 
@echo.>> "%logs%"

Voici maintenant le contenu du répertoire de sauvegarde :

Vous pouvez voir ci-dessous le fichier .log généré à chaque exécution du script. (Je vous conseille pour chaque script de créer un fichier de log pour contrôler les dysfonctionnements éventuels).

Maintenant nous allons créer la tâche planifiée :

Aller dans Démarrer → Paramètres → Panneau de configuration → Tâches Planifiées → Création d’une tâche planifiée

Choisissez votre script ainsi que la fréquence d’exécution.

Indiquer l’heure exacte d’exécution ainsi que la date de début.

Il est impératif de rentrer le mot de passe de l’administrateur ou d’un compte administrateur, sinon la tâche ne pourra s’exécuter correctement.

Récapitulatif de la tâche planifiée. Cliquer sur Terminer.

Vérifier que la tâche se lance correctement à l’aide des fichiers de log.

Voyons maintenant comment restaurer ces fameuses GPO.

Pour cela nous allons utiliser le script RestoreGPO.wsf. Dans une invite de commande taper la ligne suivante :

script RestoreAllGPOs.wsf c:\Script\Backup_Gpo /domain:quick-tutoriel.com

Ensuite lancer l’utilitaire GPMC

Puis déployer Objets de stratégie de groupe, vous avez toutes les GPO qui ont été restaurées, si certaines appartiennent à des OU déplacer la vers celle-ci.

Pour aller plus loin!!! Dans ce tutoriel nous avons vu les scripts qui permettent de sauvegarder ou restaurer toutes les GPO d’un domaine, mais sachez qu’il existe aussi des scripts permettant de sauvegarder et de restaurer des GPO de manière individuelle, ces scripts se nomment : BackupGPO.wsf et RestoreGPO.wsf .

La sauvegarde ou la restauration se fait soit par le nom de la GPO, soit par son ID.

Voilà la sauvegarde des GPO n’a plus de secret pour vous.

Vous pouvez télécharger le script en cliquant sur ce lien : script de sauvegarde des GPO.

Si vous modifier le script merci de me le joindre au format zip à partir du formulaire de contact ici pour que je le publie sur le blog.

That’s All.

5 Potins

  1. sympa ce tuto

  2. Bonjour,

    Effectivement cette commande permet juste de sauvegarder et/ou restaurer vos GPO sur le même domaine et non de transférer vos GPO d’un domaine à un autre.

    A bientôt.

  3. Merci pour ce tuto !

    Et je viens d’essayer exporter des GPO d’un domaine testland.local sur un autre serveur avec un domaine Test2.local et au moment de l’import il ma marquer :

    Microsoft (R) Windows Script Host Version 5.6
    Copyright (C) Microsoft Corporation 1996-2001. Tous droits r‚serv‚s.

    4 backups found at location c:\SavGPO.

    Processing backed up GPO ‘Default Domain Controllers Policy’
    Skipping backup for GPO ‘Default Domain Controllers Policy’ because it is from a different domain.

    Processing backed up GPO ‘Imprimente_reseau’
    Skipping backup for GPO ‘Imprimente_reseau’ because it is from a different domain.

    Processing backed up GPO ‘Default Domain Policy’
    Skipping backup for GPO ‘Default Domain Policy’ because it is from a different domain.

    Processing backed up GPO ‘Lecteur_reseau’
    Skipping backup for GPO ‘Lecteur_reseau’ because it is from a different domain.

    Restore succeeded for 0 GPOs.
    Restore failed for 0 GPOs.

    Donc je pense pas qu’on puise exporter des GPO entre nom de domaine différent, apres je suis pas un spécialiste servers windows et tous mes test ce sont fait sous virtual box

  4. Bonjour,

    N’étant pas un spécialiste des serveurs Windows, j’espère qu’une personne visitant le blog, vous répondra.

    Cordialement.

    PS: Si vous avez une info n’hésiter pas à revenir poster un commentaire.

  5. Merci pour cet excellent tuto.

    Une question cependant :
    Est-ce que cela fonctionne si on réimporte les GPO dans un autre domaine que celui-initial ?

    Je pose cette question, car dans le dossier de sauvegarde des GPO, je note la présence de variables concernant mon ancien domaine (DN).

    Est-ce que celles-ci seront remplacées lors de l’import ?
    En principe, ne faut-il pas passer par des tables de migration ?

    Merci !

Laisser un commentaire

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *