15/11/2024

Troubleshooting de la réplication Active Directory avec PowerShell

I. Présentation

Il y a plusieurs façons de réaliser un troubleshooting de la réplication Active Directory, à commencer par l’utilitaire en ligne de commande « repadmin ». Disponible depuis Windows Server 2003, il reste un outil pertinent aujourd’hui bien que PowerShell soit capable désormais d’afficher des informations pertinentes à ce sujet. Par ailleurs, l’outil graphique Active Directory Replication Status Tool est également intéressant.

Depuis Windows Server 2012, Microsoft offre aux administrateurs systèmes d’obtenir des informations sur la réplication Active Directory à l’aide de PowerShell. Comme pour le reste, c’est le module Active Directory qui apporte cette fonctionnalité.

Découvrons ensemble quelques cmdlets intéressants au sujet de la réplication Active Directory, que ce soit pour analyser l’état de la réplication Active Directory ou réaliser un troubleshooting.

II. Get-ADReplicationFailure

Cette première commande sert à vérifier si l’un de vos contrôleurs de domaine a une erreur de réplication, en indiquant son nom.

Get-ADReplicationFailure -Target <controleur-de-domaine>

Si la commande ne retourne pas de résultat, c’est qu’il n’y a pas d’erreurs de réplication pour le contrôleur de domaine en question. Sinon, le résultat contiendra le nom d’échec (FailureCount), le type d’échec (FailureType), la date et l’heure du premier échec (FirstFailureTime), ainsi que le serveur et le partenaire.

En regardant de plus près cette commande, elle contient un paramètre nommé « Scope » et qui permet d’avoir un périmètre plus ou moins large pour vérifier les erreurs de réplication. Avec la valeur « SITE », on peut vérifier les erreurs de réplication concernant un site. Par exemple, avec le site de « CAEN » :

Get-ADReplicationFailure –Scope SITE –Target CAEN

Le paramètre -Scope peut avoir deux autres valeurs : « DOMAIN » pour cibler le domaine ou « FOREST » pour cibler la forêt. La syntaxe n’est pas plus compliquée :

Get-ADReplicationFailure –Scope DOMAIN –Target it-connect.local

Passons à la suite.

III. Get-ADReplicationPartnerMetadata

Cette commande très pratique sert à obtenir des informations sur les métadonnées des partenaires de réplication et détecter une erreur de réplication au sein de votre forêt. En complément de la commande précédente, elle permettra d’affiner votre debug et d’obtenir des informations supplémentaires.

Elle retourne notamment les propriétés suivantes :

  • LastChangeUsn : obtenir l’USN (Update Sequence Number) du DC
  • LastReplicationAttempt : date et heure de la dernière réplication
  • LastReplicationResult : résultat de la dernière réplication
  • LastReplicationSuccess : date et heure de la dernière réplication réussie

Pour l’exécuter sur un contrôleur de domaine cible, la syntaxe est la suivante :

Get-ADReplicationPartnerMetadata -Target <nom-du-controleur-de-domaine>

Vous verrez qu’elle retourne de nombreuses informations, y compris les 4 propriétés citées précédemment. Maintenant, allons droit au but et utilisons cette commande pour regarder s’il y a un contrôleur de domaine qui a des problèmes de réplication :

Get-ADReplicationPartnerMetadata –Target * -Scope Server | `
   Where {$_.LastReplicationResult –ne "0"} | `
   Format-Table Server, LastReplicationAttempt, LastReplicationResult, Partner, Site

Cette commande va interroger tous les contrôleurs de domaine puisque nous indiquons la valeur « * » pour le paramètre -Target. En complément, nous ajoutons un filtre sur « LastReplicationResult » afin de prendre en compte seulement le cas où il est différent de « 0 ». Autrement dit, si le résultat est différent de « 0 », c’est qu’il y a une erreur !

La commande va retourner un tableau avec plusieurs valeurs : le nom du serveur, la date et l’heure de la dernière tentative de réplication, le résultat de la dernière réplication, le nom du partenaire avec lequel la réplication a échoué, ainsi que le site Active Directory du contrôleur de domaine.

Une bonne base pour orienter le troubleshooting dans le cas où il y a un incident, comme celui-ci par exemple :

Pour consulter la liste des opérations de réplication en attente sur un contrôleur de domaine, le cmdlet « Get-ADReplicationQueueOperation » doit être utilisé. Il suffit de préciser un nom de DC :

Get-ADReplicationQueueOperation -Server SRV-ADDS-01

Si la commande retourne un résultat vide, c’est qu’il n’y a rien dans la file d’attente pour ce DC.

IV. Get-ADReplicationAttributeMetadata

Pour obtenir des informations quant à la réplication d’un objet spécifique de votre annuaire, il est nécessaire d’utiliser la commande Get-ADReplicationAttributeMetadata.

Pour chaque attribut de cet objet, on obtient différentes informations, notamment : le nom de l’attribut, sa valeur, le dernier DC depuis lequel il a était modifié, la date et l’heure de la modification, ainsi que son USN local sur le serveur et l’USN suite au changement, ce qui permettra de voir s’il est à jour ou pas.

Pour utiliser cette commande, il faut spécifier le DistinguishedName de l’objet et le contrôleur de domaine à interroger. Par exemple :

Get-ADReplicationAttributeMetadata -Object "CN=Florian,OU=Personnel,DC=it-connect,DC=local" -Server SRV-ADDS-01 -ShowAllLinkedValues

Cette commande sera particulièrement intéressante si vous rencontrez des problèmes de réplication sur un objet spécifique.

V. Informations sur les sites Active Directory

En complément des commandes que nous venons de voir, sachez qu’il existe d’autres commandes pour obtenir des informations sur les sites Active Directory.

Ces commandes sont simples à utiliser pour obtenir des informations :

Commande Description
Get-ADReplicationSite -Filter * Obtenir la liste des sites
Get-ADReplicationSiteLink -Filter * Obtenir la liste des liens de site pour la forêt
Get-ADReplicationSiteLinkBridge -Filter * Obtenir la liste des ponts de site (bridge)
Get-ADReplicationSubnet -Filter * Obtenir la liste des sous-réseaux déclarés

Si vous rencontrez des problèmes liés à la réplication Active Directory, toutes ces commandes PowerShell vont vous rendre le troubleshooting plus facile grâce aux informations précieuses qu’elles fournissent.

author avatar
Florian BURNEL Co-founder of IT-Connect
Ingénieur système et réseau, cofondateur d'IT-Connect et Microsoft MVP "Cloud and Datacenter Management". Je souhaite partager mon expérience et mes découvertes au travers de mes articles. Généraliste avec une attirance particulière pour les solutions Microsoft et le scripting. Bonne lecture.
Partagez cet article Partager sur Twitter Partager sur Facebook Partager sur Linkedin Envoyer par mail