Cela prendra du temps à corriger.
Pour arrêter toute réplication, exécutez :
repadmin /options +DISABLE_OUTBOUND_REPL
Sur tous les DC. N’oubliez pas que le paramètre ci-dessus n’empêche pas les actions de réplication manuelles telles qu’un administrateur (vous) exécutant repadmin /syncall /APed, etc. Mais c’est une bonne chose car cela vous permet de remettre tous vos DC en synchronisation totale avant de réactiver la réplication régulière.
Repadmin détermine qu’il s’agit d’un objet résiduel si l’objet existe sur le ServeurA mais pas sur le ServeurB, où le ServeurB est le DC de référence. La différence entre la réplication d’objets nouvellement créés et la réplication de mises à jour d’objets déjà existants est la clé. Répliquer des objets nouvellement créés = bien. Répliquer des mises à jour d’objets déjà existants = bien. Répliquer des mises à jour d’objets qui n’existent pas sur le DC de destination = mauvais.
Vous n’avez qu’à lather, rinse, repeat (répéter) jusqu’à ce que tous les DC correspondent à votre unique DC de référence correct. Ensuite, activez la cohérence stricte partout, puis réactivez la réplication. Oui, vous courez le risque de supprimer des objets légitimes qui ont été créés sur d’autres DC distants et qui ne se sont pas répliqués vers votre DC de référence.
Tiré de l’excellent article « Comment fonctionne le modèle de réplication Active Directory » :
Paramètre de cohérence de réplication
Si les attributs d’un objet résiduel ne changent jamais, l’objet n’est jamais considéré pour la réplication. Cependant, si un attribut change, l’attribut est considéré pour la réplication sortante. Comme le contrôleur de domaine de destination ne détient pas l’objet pour l’attribut qui est répliqué, une mise à jour ne peut pas être effectuée. La façon dont cette condition est résolue dépend du paramètre de cohérence de réplication sur le contrôleur de domaine.
Un paramètre de registre sur les contrôleurs de domaine exécutant Windows Server 2003 ou Windows 2000 Server avec SP3 fournit une valeur de cohérence qui détermine si un contrôleur de domaine réplique et réanime un objet mis à jour qui a été supprimé de tous les autres réplicas, ou si la réplication de tels objets est bloquée. Les paramètres par défaut sont différents sur les contrôleurs de domaine exécutant Windows 2000 Server avec SP3 et Windows Server 2003.
Cohérence de réplication stricte
Pour éviter les problèmes de réanimation d’objets qui ont été supprimés, un contrôleur de domaine exécutant Windows Server 2003 dans une forêt Windows Server 2003 nouvellement créée (non mise à niveau) bloque la réplication entrante par défaut lorsqu’il reçoit une mise à jour pour un objet qu’il ne possède pas.
Remarque : La réplication Active Directory utilise le suivi des mises à jour pour différencier la réplication d’un objet nouvellement créé de la mise à jour d’un attribut pour un objet existant. La réplication d’un objet résiduel est une tentative de mise à jour d’un attribut ou d’attributs d’un objet que le contrôleur de domaine de destination ne peut pas mettre à jour car l’objet n’existe pas.
La réplication est interrompue dans la partition d’annuaire pour l’objet jusqu’à ce que l’objet résiduel soit supprimé du contrôleur de domaine source ou que le paramètre de cohérence de réplication stricte soit désactivé.
Lorsque le ServeurB dit au ServeurA : « Hé, des mises à jour ont été faites sur l’objetA existant. » Alors le ServeurA dit : « Attends quoi ? Je n’ai même pas l’objetA du tout. Envoie-moi l’objet entier ! » Si pas de cohérence stricte. Si cohérence stricte, le ServeurA dit : « Attends quoi ? Comment veux-tu que je mette à jour un objet qui n’existe pas ? Va voir ailleurs ! »
Pour savoir si vous avez des objets résiduels sur un contrôleur de domaine :
repadmin /removelingeringobjects ServerName ServerGUID DirectoryPartition /advisory_mode
ServerGUID est le DC de référence connu comme bon. Je sais que vous savez déjà cela… et comment scripter la ligne ci-dessus pour l’exécuter sur tous les DC… (foreach ($DC In $(Get-ADDomain).ReplicaDirectoryServers) { })…
Vous avez besoin d’un bon DC source pour comparer, point final. Si vous n’avez pas de DC source connu comme bon ou si vous ne le savez pas, vous devez simplement en choisir un. Ce devrait être un GC inscriptible bien sûr. C’est relatif — si tous les contrôleurs de domaine sont d’accord sur l’existence d’un objet et les attributs de cet objet… alors ce n’est pas un objet résiduel.
foreach($GC In $(Get-ADForest).GlobalCatalogs) { repadmin /removelingeringobjects $_.name 85d158d2-a006-4fff-b1e5-f9b6eaabab2b '$directoryPartition'
C’est la resynchronisation de cette partition d’annuaire de chaque GC dans la forêt avec la source connue comme bonne que vous devez spécifier en tant que GUID.
Ensuite, après que tous vos contrôleurs de domaine soient à nouveau tous en accord, et que la réplication soit satisfaisante… vous allez commencer à activer la cohérence stricte sur tous.
Modification : Ceci est la position officielle de Microsoft sur le sujet, et ce qu’ils vous expliqueront probablement si vous les appeliez.
Enfin, cela peut être plus de problèmes à corriger que cela n’en vaut la peine, sauf si cela vous cause des problèmes. Je déteste le dire, mais AD peut encore fonctionner normalement avec des objets résiduels.