Troubleshooting de la réplication Active Directory avec PowerShell
Sommaire
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.