Active Directory это довольно сложная система, даже если ваш домен состоит из двух контроллеров доменов в одном сайте AD. Администратор домена должен уметь быстро проверить состояние контроллеров домена, наличие проблем репликации и исправить найденые проблемы. В этой статье мы рассмотрим типовые команды, которые можно использовать для проверки состояния домена Active Directory и поиска возможных ошибок.
DCDiag – важная утилита для проверки состояния контроллеров домена. Войдите на любой контроллер домена, запустить командную строку и выполните команду:
dcdiag /e /v /q
Это общий тест состояния контроллеров домена и Active Directory. В данном отчете буду указаны только ошибки, которые требует внимание администратора домена.

Затем нужно проверить здоровье DNS серверов (я запускаю эти команды в консоли PowerShell):
DCDiag /Test:DNS /e /v /s:msk-dc01.test.com >c:PSDcdiagDNStest.txt
Затем откройте полученный отчет:
Notepad c:PSDcdiagDNStest.txt
Если со службой DNS нет проблем, то в разделе “Summary of DNS test results” везде должно быть указано PASS.

Если в отчете есть ошибки, нужно исправить их вручную. Если вручную исправить ошибки DNS не удается, попробуйте исправить их автоматически командой dcdiag с параметром fix:
DCDiag /Test:DNS /e /v /s:msk-dc01.test.com /fix
Затем на всех всех контроллерах домена выполните команду:
ipconfig /registerdns
После проверки контроллеров домена и DNS службы нужно проверить состояние репликации Active Directory.
Войдите на любой DC и выполните проверку репликации командой:
repadmin /replsum
Если наибольшее из значений largest delta для любого DC не превышает 1 часа и replication fails = 0, значит в вашем домене нет проблем репликации

Утилиты dcdiag и repadmin доступны на любом DC с ролью ADDS. Если вы хотите использовать эти утилиты в десктопной Windows 10, нужно установить RSAT.
Если вы обнаружили ошибки репликации, можно получить подробную информацию о них командой:
repadmin /showreps
Данная команда покажет какой контекст наименования не реплицируется в AD.
Следующая команда используется для быстрой проверки репликации на конкретном сервере. Если нужно проверить репликацию на всех DCs, используйте параметр wildcard (может занять длительное время)
repadmin /replsummary [DCname|wildcard]
Проверьте USN записи:
repadmin /showutdvec
Если нужно принудительно синхронизировать конкретный контроллер домена с другими участниками репликации, выполните команду:
replmon /syncall msk-dc01
Далее обязательно проверьте синхронизацию времени на контроллерах домена командой:
w32tm /monitor
NTP offset должен быть около 0 для всех DC. Если нет, вам нужно схему проверить синхронизацию времени в вашем домене Active Directory.

Проверьте, что на всех контроллерах домена есть расшаренные сетевые папки SYSVOL и Netlogon. Эти папки нужны для применения и репликации групповых политик (объектов GPO).
Список общих папок на DC можно вывести командой:
net share

Теперь проверьте корректность работы Netlogons в Active Directory:
dcdiag /test:netlogons
Если с Netlogon все в порядке для всех тестов должно быть указано passed test.

Осталось проверить на любом компьютере домена, что к нему применятся все назначенные политики. Для этого используется команда:
gpresult
![]()

Администрирование инфраструктуры Active Directory — это непростой процесс. От правильного взаимодействия серверов зависит работа всей корпоративной сети, даже если у вас всего парочка контроллеров домена и один локальный сайт.
Утилита dcdiag позволяет выполнять различные тесты над инфраструктурой Active Directory и запрашивать диагностическую информацию о контроллерах домена.
Синтаксис dcdiag
Общий синтаксис
dcdiag [/s:<DomainController>] [/n:<NamingContext>] [/u:<Domain><UserName> /p:{* | <Password> | ""}] [{/a | /e}] [{/q | /v}] [/i] [/f:<LogFile>] [/c [/skip:<Test>]] [/test:<Test>] [/fix] [{/h | /?}] [/ReplSource:<SourceDomainController>]
Параметры dcdiag:
- /s:<DomainController>
Указывает контроллер домена. Если не указано, то используется локальный контроллер домена. Не используется в тестах DcPromo и RegisterInDns, которые можно выполнить только локально. - /n:<NamingContext>
Контекст именования в форматах NetBIOS, DNS (FQDN), DN. - /u:<Domain><UserName> /p:{* | <Password> | «»}
Запускает dcdiag от имени другого пользователя. По умолчанию dcdiag выполняется от имени текущего пользователя. - /a
Тестировать все серверы указанного сайта. - /e
Тестировать все серверы леса, перекрывает /a. - /q
Тихий режим. Выводятся только ошибки. - /v
Подробный режим. Выводится дополнительная информация. - /i
Игнорировать некритичные ошибки. - /fix
Только для теста MachineAccount. Исправление некорректных Service Principal Names (SPNs) на контроллере домена. - /f:<LogFile>
Вывод результатов в лог. - /c
Выполняет все тесты, кроме DCPromo и RegisterInDNS. Включает тесты не по умолчанию: Topology, CutoffServers, OutboundSecureChannels. Можно использовать совместно со /skip для пропуска определённых тестов. - {/h | /?}
Помощь. - /test:<Test>
Выполнить указанный тест. Дополнительно выполняется тест Connectivity. - /ReplSource:<SourceDomainController>
Только для теста CheckSecurityError. Проверяет соединение между контроллером домена, на котором выполняется команда, и исходным контроллером домена. SourceDomainController — это NetBIOS, DNS (FQDN) или DN имя сервера, который будет исходным контроллером домена для репликации.
Синтаксис для теста DNS
dcdiag /test:DNS [/DnsBasic | /DnsForwarders | /DnsDelegation | /DnsDynamicUpdate | /DnsRecordRegistration | /DnsResolveExtName [/DnsInternetName:<InternetName>] | /DnsAll] [/f:<LogFile>] [/x:<XMLLog.xml>] [/xsl:<XSLFile.xsl> or <XSLTFile.xslt>] [/s:<DomainController>] [/e] [/v]
Параметры dcdiag для теста DNS:
- /test:DNS
Тест DNS. По умолчанию /DnsAll. - /DnsBasic
Основные тесты DNS, соединение, конфигурация DNS клиента, доступность службы, существование зоны. - /DnsForwarders
Тесты DnsBasic и DNS-форвардинг. - /DnsDelegation
Тесты DnsBasic и проверка делегирования. - /DnsDynamicUpdate
Тесты DnsBasic и пределяет, включено ли динамическое обновление в зоне Active Directory. - /DnsRecordRegistration
Тесты DnsBasic tests и также проверяет, зарегистрированы ли записи A, CNAME и службы SRV. Кроме того, создается отчет об инвентаризации на основе результатов тестирования. - /DnsResolveExtName **[/DnsInternetName:<**InternetName>]
Тесты DnsBasic и делает resolve InternetName. Если DnsInternetName не указано, делает resolve www.microsoft.com. Если DnsInternetName указано, делает resolve указанного InternetName. - /DnsAll
Все тесты кроме DnsResolveExtName и создает отчет. - **/f:<**LogFile>
Вывод результатов в лог. - **/s:<**DomainController>
Указывает контроллер домена. Если не указано, то используется локальный контроллер домена. - /e
Все тесты DNS для всех контроллеров домена леса. - /v
Подробный режим. Выводится дополнительная информация. - /x:<XMLLog.xml>
Вывод результатов в <XMLLog.xml>. Только вместе с опцией /test:dns. - /xsl:<XSLFile.xsl> или <XSLTFile.xslt>
Добавляем файл стилей. Только вместе с опцией /test:dns /x:<XMLLog.xml>.
Тесты dcdiag
Тесты, которые нельзя пропустить
- Connectivity
Проверяет регистрацию DNS, ping, LDAP RPC для каждого контроллера домена.
Тесты, которые можно пропустить
- Replications
Проверяет возможность репликации между контроллерами домена и сообщает об ошибках репликации. - NCSecDesc
Проверяет, что дескрипторы безопасности в головках контекста именования имеют соответствующие разрешения для репликации. - NetLogons
Проверяет наличие соответствующих привилегий входа в систему для репликации. - Advertising
Проверяет, правильно ли контроллер домена сообщает о себе и о своих ролях, которые он должен выполнять. Этот тест завершиться неудачно, если служба NetLogon не запущена. - KnowsOfRoleHolders
Проверяет доступность контроллеров домена с ролями FSMO. - Intersite
Проверяет наличие ошибок, которые могут помешать нормальной репликации между сайтами. Результаты могут быть неточными. - FSMOCheck
Проверяет, что контроллер домена может подключиться к KDC, NTP, предпочтительному NTP, PDC, серверу глобального каталога. - RidManager
Проверяет RID мастера. - MachineAccount
Проверяет службы и регистрацию учетной записи целевого компьютера. Если обнаружена ошибка, ее можно исправить, указав параметры /FixMachineAccount или /RecreateMachineAccount. - Services
Проверяет службы контроллера домена. - OutboundSecureChannels
Проверяет наличие безопасных каналов между всеми контроллерами домена. - ObjectsReplicated
Проверяет правильность репликации Machine Account и Directory System Agent (DSA). Можно использовать **/objectdn:**dn и **/n:**nc параметры. - frssysvol
Проверяет FRS и SYSVOL. - frsevent
Проверка ошибок системы репликации. - kccevent
Проверка KCC. - systemlog
Проверка лога на наличие ошибок. - CheckSDRefDom
Проверяет, что все разделы каталога приложений имеют соответствующие домены ссылок на дескрипторы безопасности. - VerifyReplicas
Проверяет разделы каталога приложения на всех серверах, принимающих участие в репликации. - CrossRefValidation
Проверяет правильность перекрестных ссылок для доменов. - VerifyReferences
Проверяет, что системные ссылки не повреждены для FRS и репликации. - VerifyEnterpriseReferences
Проверяет, что системные ссылки не повреждены для FRS и репликации во всех объектах на каждом контроллере домена. - /skip:<Test>
Пропускает указанный тест. Connectivity выполняется всегда.
Тесты, которые не выполняются по умолчанию
- Topology
Проверяет, что KCC генерирует правильную топологию для всех контроллеров домена. - CheckSecurityError
Отчет об общем состоянии репликации в отношении безопасности Active Directory на контроллерах домена под управлением Windows Server 2003 SP1. Вы можете выполнить этот тест для одного или всех контроллеров домена на предприятии. По завершении теста dcdiag представляет сводку результатов, а также подробную информацию по каждому протестированному контроллеру домена и диагностику ошибок безопасности, о которых сообщил тест.
Cледующий аргумент является необязательным:
**/ReplSource:**SourceDomainController
Этот аргумент проверяет возможность создания связи репликации между реальным или потенциальным контроллером домена-источника (SourceDomainController) и локальным контроллером домена. - CutoffServers
Проверяет есть ли серверы репликации без партнёра. - DNS
Включает шесть дополнительных тестов. Имеет отдельный синтаксис, См. выше.
Тесты не для контроллеров домена
- DcPromo
Проверяет инфраструктуру DNS для любого компьютера, который вы хотите сделать контроллером домена. Если инфраструктура достаточна, вы можете сделать компьютер контроллером домена, указанном в параметре **/DnsDomain:**Active_Directory_Domain_DNS_Name. Этот параметр сообщает, требуются ли какие-либо изменения в существующей инфраструктуре DNS. Обязательным аргументом является **/DnsDomain:**Active_Directory_Domain_DNS_Name. Требуется один из следующих аргументов: /NewForest, /NewTree, /ChildDomain, /ReplicaDC. Если указан аргумент /NewTree, необходимо также указать аргумент **/ForestRoot:**Forest_Root_Domain_DNS_Name. - RegisterInDNS
Проверяет, может ли этот контроллер домена зарегистрировать Domain Controller Locator DNS записи. Эти записи должны присутствовать в DNS для других компьютеров, чтобы найти этот контроллер домена для домена Active_Directory_Domain_DNS_Name. Этот параметр сообщает, требуются ли какие-либо изменения в существующей инфраструктуре DNS. Обязательным аргументом является **/DnsDomain:**Active_Directory_Domain_DNS_Name.
Пример
Давайте продиагностируем какой-нибудь контроллер домена.
Запускаю прямо на контроллере домена выполнение всех тестов по умолчанию:

Проверим корректность работа DNS:
dcdiag /s:ilab-dc /test:dns /e

Все тесты пройдены успешно.
Ссылки
https://docs.microsoft.com/en-us/previous-versions/windows/it-pro/windows-server-2012-r2-and-2012/cc731968(v=ws.11)
Обновлено 28.04.2017
Как вы все знаете в локальных сетях построенных на использовании контроллеров домена Active Directory, они несут самую наиважнейшую роль, так как без их нормальной работы, можно забыть про стабильность данной конструкции. В первоочередные обязанности системного администратора, входит проверка наличия ошибок на DC и их устранение. Для меня наиболее удобным вариантом оказался простейший пакетный файл, который состоит всего из пары строк:
Содержание скрипта
repadmin /replsummary
pause
dcdiag /a /q
pause
repadmin /syncall
pause
Приведенный выше файл автоматически тестирует все контроллеры домена в лесу и выводит отчет на экран. Ваша задача – визуально проверить отчет на наличие строк, в которых встречается слово “failed”. Если все тесты содержат “passed’, значит с высокой долей вероятности Active Directory в вашей сети повышенного внимания не требует. Вот реальный пример показывающий, что есть проблемы с доступностью некоторых DC.

На втором шаге, так же обнаружены неисправности, которые требуют устранения.

Я бы рекомендовал запускать такой пакетный файл каждое утро перед началом работы.
Скачать готовый файл вы можете по ссылке
Дополнительная информация об утилите dcdiag:
ссылка
Апр 28, 2017 14:37
Один из механизмов Active Directory (AD), с которым могут быть связаны всевозможные затруднения, это репликация. Репликация – критически важный процесс в работе одного или более доменов или контроллеров домена (DC), и не важно, находятся они на одном сайте или на разных. Неполадки с репликацией могут привести к проблемам с аутентификацией и доступом к сетевым ресурсам. Обновления объектов AD реплицируются на контроллеры домена, чтобы все разделы были синхронизированы. В крупных компаниях использование большого количества доменов и сайтов – обычное дело. Репликация должна происходить внутри локального сайта, так же как дополнительные сайты должны сохранять данные домена и леса между всеми DC.
В этой статье речь пойдет о методах выявления проблем с репликацией в AD. Кроме того, я покажу, как находить и устранять неисправности и работать с четырьмя наиболее распространенными ошибками репликации AD:
- Error 2146893022 (главное конечное имя неверно);
- Error 1908 (не удалось найти контроллер домена);
- Error 8606 (недостаточно атрибутов для создания объекта);
- Error 8453 (доступ к репликации отвергнут).
Вы также узнаете, как анализировать метаданные репликации с помощью таких инструментов, как AD Replication Status Tool, встроенная утилита командной строки RepAdmin.exe и Windows PowerShell.
Для всестороннего рассмотрения я буду использовать лес Contoso, который показан на рисунке. В таблице 1 перечислены роли, IP-адреса и настройки DNS-клиента для компьютеров данного леса.
![]() |
| Рисунок. Архитектура леса |

Для обнаружения неполадок с репликацией AD запустите AD Replication Status Tool на рабочей станции администратора в корневом домене леса. Например, вы открываете этот инструмент из системы Win8Client, а затем нажимаете кнопку Refresh Replication Status для уверенности в четкой коммуникации со всеми контроллерами домена. В таблице Discovery Missing Domain Controllers на странице Configuration/Scope Settings инструмента можно увидеть два недостающих контроллера домена, как показано на экране 1.
![]() |
| Экран 1. Два недостающих контроллера домена |
В таблице Replication Status Collection Details вы можете проследить статус репликации контроллеров домена, которые никуда не пропадали, как показано на экране 2.
![]() |
| Экран 2. Статус репликации контроллеров домена |
Пройдя на страницу Replication Status Viewer, вы обнаружите некоторые ошибки в репликации. На экране 3 видно, что возникает немалое число ошибок репликации, возникающих в лесу Contoso. Из пяти контроллеров домена два не могут видеть другие DC, а это означает, что репликация не будет происходить на контроллерах домена, которые не видны. Таким образом, пользователи, подключающиеся к дочерним DC, не будут иметь доступ к самой последней информации, что может привести к проблемам.
![]() |
| Экран 3. Ошибки репликации, возникающие в лесу Contoso |
Поскольку ошибки репликации все же возникают, полезно задействовать утилиту командной строки RepAdmin.exe, которая помогает получить отчет о состоянии репликации по всему лесу. Чтобы создать файл, запустите следующую команду из Cmd.exe:
Repadmin /showrel * /csv > ShowRepl.csv
Проблема с двумя DC осталась, соответственно вы увидите два вхождения LDAP error 81 (Server Down) Win32 Err 58 на экране, когда будет выполняться команда. Мы разберемся с этими ошибками чуть позже. А теперь откройте ShowRepl.csv в Excel и выполните следующие шаги:
- Из меню Home щелкните Format as table и выберите один из стилей.
- Удерживая нажатой клавишу Ctrl, щелкните столбцы A (Showrepl_COLUMNS) и G (Transport Type). Правой кнопкой мыши щелкните в этих столбцах и выберите Hide.
- Уменьшите ширину остальных столбцов так, чтобы был виден столбец K (Last Failure Status).
- Для столбца I (Last Failure Time) нажмите стрелку вниз и отмените выбор 0.
- Посмотрите на дату в столбце J (Last Success Time). Это последнее время успешной репликации.
- Посмотрите на ошибки в столбце K (Last Failure Status). Вы увидите те же ошибки, что и в AD Replication Status Tool.
Таким же образом вы можете запустить средство RepAdmin.exe из PowerShell. Для этого сделайте следующее:
1. Перейдите к приглашению PowerShell и введите команду
Repadmin /showrepl * /csv | ConvertFrom-Csv | Out-GridView
2. В появившейся сетке выберите Add Criteria, затем Last Failure Status и нажмите Add.
3. Выберите подчеркнутое слово голубого цвета contains в фильтре и укажите does not equal.
4. Как показано на экране 4, введите 0 в поле, так, чтобы отфильтровывалось все со значением 0 (успех) и отображались только ошибки.
![]() |
| Экран 4. Задание фильтра |
Теперь, когда вы знаете, как проверять статус репликации и обнаруживать ошибки, давайте посмотрим, как выявлять и устранять четыре наиболее распространенные неисправности.
Исправление ошибки AD Replication Error -2146893022
Итак, начнем с устранения ошибки -2146893022, возникающей между DC2 и DC1. Из DC1 запустите команду Repadmin для проверки статуса репликации DC2:
Repadmin /showrepl dc2
На экране 5 показаны результаты, свидетельствующие о том, что репликация перестала выполняться, поскольку возникла проблема с DC2: целевое основное имя неверно. Тем не менее, описание ошибки может указать ложный путь, поэтому приготовьтесь копать глубже.
![]() |
| Экран 5. Проблема с DC2 — целевое основное имя неверно |
Во-первых, следует определить, есть ли базовое подключение LDAP между системами. Для этого запустите следующую команду из DC2:
Repadmin /bind DC1
На экране 5 видно, что вы получаете сообщение об ошибке LDAP. Далее попробуйте инициировать репликацию AD с DC2 на DC1:
Repadmin /replicate dc2 dc1 «dc=root,dc=contoso,dc=com»
И на этот раз отображается та же ошибка с главным именем, как показано на экране 5. Если открыть окно Event Viewer на DC2, вы увидите событие с Event ID 4 (см. экран 6).
![]() |
| Экран 6. Сообщение о событии с Event ID 4 |
Выделенный текст в событии указывает на причину ошибки. Это означает, что пароль учетной записи компьютера DC1 отличается от пароля, который хранится в AD для DC1 в Центре распределения ключей – Key Distribution Center (KDC), который в данном случае запущен на DC2. Значит, следующая наша задача – определить, соответствует ли пароль учетной записи компьютера DC1 тому, что хранится на DC2. В командной строке на DC1 введите две команды:
Repadmin /showobjmeta dc1 «cn=dc1,ou=domain controllers, dc=root,dc=contoso,dc=com» > dc1objmeta1.txt
Repadmin /showobjmeta dc2 «cn=dc1,ou=domain controllers, dc=root,dc=contoso,dc=com» > dc1objmeta2.txt
Далее откройте файлы dc1objmeta1.txt и dc1objmeta2.txt, которые были созданы, и посмотрите на различия версий для dBCSPwd, UnicodePWD, NtPwdHistory, PwdLastSet и lmPwdHistory. В нашем случае файл dc1objmeta1.txt показывает версию 19, тогда как версия в файле dc1objmeta2.txt – 11. Таким образом, сравнивая эти два файла, мы видим, что DC2 содержит информацию о старом пароле для DC1. Операция Kerberos не удалась, потому что DC1 не смог расшифровать билет службы, представленный DC2.
KDC, запущенный на DC2, не может быть использован для Kerberos вместе с DC1, так как DC2 содержит информацию о старом пароле. Чтобы решить эту проблему, вы должны заставить DC2 использовать KDC на DC1, чтобы завершить репликацию. Для этого вам, в первую очередь, необходимо остановить службу KDC на DC2:
Net stop kdc
Теперь требуется начать репликацию корневого раздела Root:
Repadmin /replicate dc2 dc1 «dc=root,dc=contoso,dc=com»
Следующим вашим шагом будет запуск двух команд Repadmin /showobjmeta снова, чтобы убедиться в том, что версии совпадают. Если все хорошо, вы можете перезапустить службу KDC:
Net start kdc
Обнаружение и устранение ошибки AD Replication Error 1908
Теперь, когда мы устранили ошибку -2146893022, давайте перейдем к ошибке репликации AD 1908, где DC1, DC2 и TRDC1 так и не удалось выполнить репликацию из ChildDC1. Решить проблему можно следующим образом. Используйте Nltest.exe для создания файла Netlogon.log, чтобы выявить причину ошибки 1908. Прежде всего, включите расширенную регистрацию на DC1, запустив команду:
Nltest /dbflag:2080fff
Теперь, когда расширенная регистрация включена, запустите репликацию между DC – так все ошибки будут зарегистрированы. Этот шаг поможет запустить три команды для воспроизведения ошибок. Итак, во-первых, запустите следующую команду на DC1:
Repadmin /replicate dc1 childdc1 dc=child,dc=root, dc=contoso,dc=com
Результат, показанный на экране 7, говорит о том, что репликация не состоялась, потому что DC домена не может быть найден.
![]() |
| Экран 7. Репликация не состоялась, потому что DC домена не может быть найден |
Во-вторых, из DC1 попробуйте определить местоположение KDC в домене child.root.contoso.com с помощью команды:
Nltest /dsgetdc:child /kdc
Результаты на экране 7 свидетельствуют, что такого домена нет. В-третьих, поскольку вы не можете найти KDC, попытайтесь установить связь с любым DC в дочернем домене, используя команду:
Nltest /dsgetdc:child
В очередной раз результаты говорят о том, что нет такого домена, как показано на экране 7.
Теперь, когда вы воспроизвели все ошибки, просмотрите файл Netlogon.log, созданный в папке C:Windowsdebug. Откройте его в «Блокноте» и найдите запись, которая начинается с DSGetDcName function called. Обратите внимание, что записей с таким вызовом будет несколько. Вам нужно найти запись, имеющую те же параметры, что вы указали в команде Nltest (Dom:child и Flags:KDC). Запись, которую вы ищете, будет выглядеть так:
DSGetDcName function called: client PID=2176, Dom:child Acct:(null) Flags:KDC
Вы должны просмотреть начальную запись, равно как и последующие, в этом потоке. В таблице 2 представлен пример потока 3372. Из этой таблицы следует, что поиск DNS записи KDC SRV в дочернем домене был неудачным. Ошибка 1355 указывает, что заданный домен либо не существует, либо к нему невозможно подключиться.

Поскольку вы пытаетесь подключиться к Child.root.contoso.com, следующий ваш шаг – выполнить для него команду ping из DC1. Скорее всего, вы получите сообщение о том, что хост не найден. Информация из файла Netlogon.log и ping-тест указывают на возможные проблемы в делегировании DNS. Свои подозрения вы можете проверить, сделав тест делегирования DNS. Для этого выполните следующую команду на DC1:
Dcdiag /test:dns /dnsdelegation > Dnstest.txt
На экране 8 показан пример файла Dnstest.txt. Как вы можете заметить, это проблема DNS. Считается, что IP-адрес 192.168.10.1 – адрес для DC1.
![]() |
| Экран 8. Пример файла Dnstest.txt |
Чтобы устранить проблему DNS, сделайте следующее:
1. На DC1 откройте консоль управления DNS.
2. Разверните Forward Lookup Zones, разверните root.contoso.com и выберите child.
3. Щелкните правой кнопкой мыши (как в родительской папке) на записи Name Server и выберите пункт Properties.
4. Выберите lamedc1.child.contoso.com и нажмите кнопку Remove.
5. Выберите Add, чтобы можно было добавить дочерний домен сервера DNS в настройки делегирования.
6. В окне Server fully qualified domain name (FQDN) введите правильный сервер childdc1.child.root.contoso.com.
7. В окне IP Addresses of this NS record введите правильный IP-адрес 192.168.10.11.
8. Дважды нажмите кнопку OK.
9. Выберите Yes в диалоговом окне, где спрашивается, хотите ли вы удалить связующую запись (glue record) lamedc1.child.contoso.com [192.168.10.1]. Glue record – это запись DNS для полномочного сервера доменных имен для делегированной зоны.
10. Используйте Nltest.exe для проверки, что вы можете найти KDC в дочернем домене. Примените опцию /force, чтобы кэш Netlogon не использовался:
Nltest /dsgetdc:child /kdc /force
11. Протестируйте репликацию AD из ChildDC1 на DC1 и DC2. Это можно сделать двумя способами. Один из них – выполнить команду
Repadmin /replicate dc1 childdc1 «dc=child,dc=root, dc=contoso,dc=com»
Другой подход заключается в использовании оснастки Active Directory Sites и Services консоли Microsoft Management Console (MMC), в этом случае правой кнопкой мыши щелкните DC и выберите Replicate Now, как показано на экране 9. Вам нужно это сделать для DC1, DC2 и TRDC1.
![]() |
| Экран 9. Использование оснастки Active Directory Sites и?Services |
После этого вы увидите диалоговое окно, как показано на экране 10. Не учитывайте его, нажмите OK. Я вкратце расскажу об этой ошибке.
![]() |
| Экран 10. Ошибка при репликации |
Когда все шаги выполнены, вернитесь к AD Replication Status Tool и обновите статус репликации на уровне леса. Ошибки 1908 больше быть не должно. Ошибка, которую вы видите, это ошибка 8606 (недостаточно атрибутов для создания объекта), как отмечалось на экране 10. Это следующая трудность, которую нужно преодолеть.
Устранение ошибки AD Replication Error 8606
Устаревший объект (lingering object) – это объект, который присутствует на DC, но был удален на одном или нескольких других DC. Ошибка репликации AD 8606 и ошибка 1988 в событиях Directory Service – хорошие индикаторы устаревших объектов. Важно учитывать, что можно успешно завершить репликацию AD и не регистрировать ошибку с DC, содержащего устаревшие объекты, поскольку репликация основана на изменениях. Если объекты не изменяются, то реплицировать их не нужно. По этой причине, выполняя очистку устаревших объектов, вы допускаете, что они есть у всех DC (а не только DCs logging errors).
Чтобы устранить проблему, в первую очередь убедитесь в наличии ошибки, выполнив следующую команду Repadmin на DC1:
Repadmin /replicate dc1 dc2 «dc=root,dc=contoso,dc=com»
Вы увидите сообщение об ошибке, как показано на экране 11. Кроме того, вы увидите событие с кодом в Event Viewer DC1 (см. экран 12). Обратите внимание, что событие с кодом 1988 только дает отчет о первом устаревшем объекте, который вам вдруг встретился. Обычно таких объектов много.
![]() |
| Экран 11. Ошибка из-за наличия устаревшего объекта |
![]() |
| Экран 12. Событие с кодом 1988 |
Вы должны скопировать три пункта из информации об ошибке 1988 в событиях: идентификатор globally unique identifier (GUID) устаревшего объекта, сервер-источник (source DC), а также уникальное, или различающееся, имя раздела – distinguished name (DN). Эта информация позволит определить, какой DC имеет данный объект.
Прежде всего, используйте GUID объекта (в данном случае 5ca6ebca-d34c-4f60-b79c-e8bd5af127d8) в следующей команде Repadmin, которая отправляет результаты в файл Objects.txt:
Repadmin /showobjmeta * «e8bd5af127d8>» > Objects.txt
Если вы откроете файл Objects.txt, то увидите, что любой DC, который возвращает метаданные репликации для данного объекта, содержит один или более устаревших объектов. DC, не имеющие копии этого объекта, сообщают статус 8439 (уникальное имя distinguished name, указанное для этой операции репликации, недействительно).
Затем вам нужно, используя GUID объект Directory System Agent (DSA) DC1, идентифицировать все устаревшие объекты в разделе Root на DC2. DSA предоставляет доступ к физическому хранилищу информации каталога, находящейся на жестком диске. В AD DSA – часть процесса Local Security Authority. Для этого выполните команду:
Repadmin /showrepl DC1 > Showrepl.txt
В Showrepl.txt GUID объект DSA DC1 появляется вверху файла и выглядит следующим образом:
DSA object GUID: 70ff33ce-2f41-4bf4-b7ca-7fa71d4ca13e
Ориентируясь на эту информацию, вы можете применить следующую команду, чтобы удостовериться в существовании устаревших объектов на DC2, сравнив его копию раздела Root с разделом Root DC1.
Repadmin /removelingeringobjects DC2 70ff33ce-2f41-4bf4- b7ca-7fa71d4ca13e «dc=root,dc=contoso,dc=com» /Advisory_mode
Далее вы можете просмотреть журнал регистрации событий Directory Service на DC2, чтобы узнать, есть ли еще какие-нибудь устаревшие объекты. Если да, то о каждом будет сообщаться в записи события 1946. Общее число устаревших объектов для проверенного раздела будет отмечено в записи события 1942.
Вы можете удалить устаревшие объекты несколькими способами. Предпочтительно использовать ReplDiag.exe. В качестве альтернативы вы можете выбрать RepAdmin.exe.
Используем ReplDiag.exe. С вашей рабочей станции администратора в корневом домене леса, а в нашем случае это Win8Client, вы должны выполнить следующие команды:
Repldiag /removelingeringobjects Repadmin /replicate dc1 dc2 «dc=root,dc=contoso,dc=com»
Первая команда удаляет объекты. Вторая команда служит для проверки успешного завершения репликации (иными словами, ошибка 8606 больше не регистрируется). Возвращая команды Repadmin /showobjmeta, вы можете убедиться в том, что объект был удален из всех, что объект был удален DC. Если у вас есть контроллер только для чтения read-only domain controller (RODC) и он содержал данный устаревший объект, вы заметите, что он все еще там находится. Дело в том, что текущая версия ReplDiag.exe не удаляет объекты из RODC. Для очистки RODC (в нашем случае, ChildDC2) выполните команду:
Repadmin /removelingeringobjects childdc2.child.root. contoso.com 70ff33ce-2f41-4bf4-b7ca-7fa71d4ca13e «dc=root,dc=contoso,dc=com» /Advisory_mode
После этого просмотрите журнал событий Directory Service на ChildDC2 и найдите событие с кодом 1939. На экране 13 вы видите уведомление о том, что устаревшие объекты были удалены.
![]() |
| Экран 13. Сообщение об удалении устаревших объектов |
Используем RepAdmin.exe. Другой способ, позволяющий удалить устаревшие объекты – прибегнуть к помощи RepAdmin.exe. Сначала вы должны удалить устаревшие объекты главных контроллеров домена (reference DC) с помощью кода, который видите в листинге 1. После этого необходимо удалить устаревшие объекты из всех остальных контроллеров домена (устаревшие объекты могут быть показаны или на них могут обнаружиться ссылки на нескольких контроллерах домена, поэтому убедитесь, что вы удалили их все). Необходимые для этой цели команды приведены в листинге 2.
Как видите, использовать ReplDiag.exe гораздо проще, чем RepAdmin.exe, поскольку вводить команд вам придется намного меньше. Ведь чем больше команд, тем больше шансов сделать опечатку, пропустить команду или допустить ошибку в командной строке.
Устранение ошибки AD Replication Error 8453
Предыдущие ошибки репликации AD были связаны с невозможностью найти другие контроллеры домена. Ошибка репликации AD с кодом состояния 8453 возникает, когда контроллер домена видит другие DC, но не может установить с ними связи репликации.
Например, предположим, что ChildDC2 (RODC) в дочернем домене не уведомляет о себе как о сервере глобального каталога – Global Catalog (GC). Для получения статуса ChildDC2 запустите следующие команды на ChildDC2:
Repadmin /showrepl childdc2 > Repl.txt
Данная команда отправляет результаты Repl.txt. Если вы откроете этот текстовый файл, то увидите вверху следующее:
BoulderChildDC2 DSA Options: IS_GC DISABLE_OUTBOUND_REPL IS_RODC WARNING: Not advertising as a global catalog
Если вы внимательно посмотрите на раздел Inbound Neighbors, то увидите, что раздел DC=treeroot,DC=fabrikam,DC=com отсутствует, потому что он не реплицируется. Взгляните на кнопку файла – вы увидите ошибку:
Source: BoulderTRDC1 ******* 1 CONSECTUTIVE FAILURES since 2014-01-12 11:24:30 Last error: 8453 (0x2105): Replication access was denied Naming Context: DC=treeroot,DC=fabrikam,DC=com
Эта ошибка означает, что ChildDC2 не может добавить связь репликации (replication link) для раздела Treeroot. Как показано на экране 14, данная ошибка также записывается в журнал регистрации событий Directory Services на ChildDC2 как событие с кодом 1926.
![]() |
| Экран 14. Отсутствие связи репликации |
Здесь вам нужно проверить, нет ли проблем, связанных с безопасностью. Для этого используйте DCDiag.exe:
Dcdiag /test:checksecurityerror
На экране 15 показан фрагмент вывода DCDiag.exe.
![]() |
| Экран 15. Фрагмент вывода DCDiag.exe |
Как видите, вы получаете ошибку 8453, потому что группа безопасности Enterprise Read-Only Domain Controllers не имеет разрешения Replicating Directory Changes.
Чтобы решить проблему, вам нужно добавить отсутствующую запись контроля доступа – missing access control entry (ACE) в раздел Treeroot. В этом вам помогут следующие шаги:
1. На TRDC1 откройте оснастку ADSI Edit.
2. Правой кнопкой мыши щелкните DC=treeroot,DC=fabrikam,DC=com и выберите Properties.
3. Выберите вкладку Security.
4. Посмотрите разрешения на этот раздел. Отметьте, что нет записей для группы безопасности Enterprise Read-Only Domain Controllers.
5. Нажмите Add.
6. В окне Enter the object names to select наберите ROOTEnterprise Read-Only Domain Controllers.
7. Нажмите кнопку Check Names, затем выберите OK, если указатель объектов (object picker) разрешает имя.
8. В диалоговом окне Permissions для Enterprise Read-Only Domain Controllers снимите флажки Allow для следующих разрешений
*Read
*Read domain password & lockout policies («Чтение политики блокировки и пароля домена»)
*Read Other domain parameters
9. Выберите флажок Allow для разрешения Replicating Directory Changes, как показано на экране 16. Нажмите OK.
10. Вручную запустите Knowledge Consistency Checker (KCC), чтобы немедленно сделать перерасчет топологии входящей репликации на ChildDC2, выполнив команду
Repadmin /kcc childdc2
![]() |
| Экран 16. Включение разрешения Replicating Directory Change |
Данная команда заставляет KCC на каждом целевом сервере DC незамедлительно делать перерасчет топологии входящей репликации, добавляя снова раздел Treeroot.
Состояние репликации критически важно
Репликация во всех отношениях в лесу AD имеет решающее значение. Следует регулярно проводить ее диагностику, чтобы изменения были видны всем контроллерам домена, иначе могут возникать различные проблемы, в том числе связанные с аутентификацией. Проблемы репликации нельзя обнаружить сразу. Поэтому если вы пренебрегаете мониторингом репликации (в крайнем случае, периодически делайте проверку), то рискуете столкнуться с трудностями в самый неподходящий момент. Моей задачей было показать вам, как проверять статус репликации, обнаруживать ошибки и в то же время как справиться с четырьмя типичными проблемами репликации AD.
Листинг 1. Команды для удаления устаревших объектов из Reference DC
REM Команды для удаления устаревших объектов REM из раздела Configuration. Repadmin /removelingeringobjects childdc1.child.root. contoso.com 70ff33ce-2f41-4bf4-b7ca-7fa71d4ca13e «cn=configuration,dc=root,dc=contoso,dc=com» Repadmin /removelingeringobjects childdc1.child.root. contoso.com 3fe45b7f-e6b1-42b1-bcf4-2561c38cc3a6 «cn=configuration,dc=root,dc=contoso,dc=com» Repadmin /removelingeringobjects childdc1.child.root. contoso.com 0b457f73-96a4-429b-ba81-1a3e0f51c848 «cn=configuration,dc=root,dc=contoso,dc=com» REM Команды для удаления устаревших объектов REM из раздела ForestDNSZones. Repadmin /removelingeringobjects childdc1.child.root. contoso.com 70ff33ce-2f41-4bf4-b7ca-7fa71d4ca13e «dc=forestdnszones,dc=root,dc=contoso,dc=com» Repadmin /removelingeringobjects childdc1.child.root. contoso.com 3fe45b7f-e6b1-42b1-bcf4-2561c38cc3a6 «dc=forestdnszones,dc=root,dc=contoso,dc=com» Repadmin /removelingeringobjects childdc1.child. root.contoso.com 0b457f73-96a4-429b-ba81- 1a3e0f51c848 «dc=forestdnszones,dc=root, dc=contoso,dc=com» REM Команды для удаления устаревших объектов REM из раздела домена Root. Repadmin /removelingeringobjects dc1.root. contoso.com 3fe45b7f-e6b1-42b1-bcf4-2561c38cc3a6 «dc=root,dc=contoso,dc=com» REM Команды для удаления устаревших объектов REM из раздела DomainDNSZones. Repadmin /removelingeringobjects dc1.root. contoso.com 3fe45b7f-e6b1-42b1-bcf4-2561c38cc3a6 «dc=root,dc=contoso,dc=com»
Листинг 2. Команды для удаления устаревших объектов из остальных DC
REM Команды для удаления устаревших объектов REM из раздела Configuration. Repadmin /removelingeringobjects dc1.root. contoso.com 0c559ee4-0adc-42a7-8668-e34480f9e604 «cn=configuration,dc=root,dc=contoso,dc=com» Repadmin /removelingeringobjects dc2.root. contoso.com 0c559ee4-0adc-42a7-8668-e34480f9e604 «cn=configuration,dc=root,dc=contoso,dc=com» Repadmin /removelingeringobjects childdc2.child.root. contoso.com 0b457f73-96a4-429b-ba81-1a3e0f51c848 «cn=configuration,dc=root,dc=contoso,dc=com» Repadmin /removelingeringobjects trdc1.treeroot. fabrikam.com 0c559ee4-0adc-42a7-8668-e34480f9e604 «cn=configuration,dc=root,dc=contoso,dc=com» REM Команды для удаления устаревших объектов REM из раздела ForestDNSZones. Repadmin /removelingeringobjects dc1.root.contoso. com 0c559ee4-0adc-42a7-8668-e34480f9e604 «dc=forestdnszones,dc=root,dc=contoso,dc=com» Repadmin /removelingeringobjects dc2.root.contoso. com 0c559ee4-0adc-42a7-8668-e34480f9e604 «dc=forestdnszones,dc=root,dc=contoso,dc=com» Repadmin /removelingeringobjects childdc2.child.root. contoso.com 0b457f73-96a4-429b-ba81-1a3e0f51c848 «dc=forestdnszones,dc=root,dc=contoso,dc=com» Repadmin /removelingeringobjects trdc1.treeroot. fabrikam.com 0c559ee4-0adc-42a7-8668-e34480f9e604 «dc=forestdnszones,dc=root,dc=contoso,dc=com» REM Команды для удаления устаревших объектов REM из раздела DomainDNSZones–Root. Repadmin /removelingeringobjects dc2.child.root. contoso.com 70ff33ce-2f41-4bf4-b7ca-7fa71d4ca13e «dc=domaindnszones,dc=root,dc=contoso,dc=com» REM Команды для удаления устаревших объектов REM из раздела домена Child. Repadmin /removelingeringobjects dc1.root.contoso. com 0c559ee4-0adc-42a7-8668-e34480f9e604 «dc=child,dc=root,dc=contoso,dc=com» Repadmin /removelingeringobjects dc2.root.contoso. com 0c559ee4-0adc-42a7-8668-e34480f9e604 «dc=child,dc=root,dc=contoso,dc=com» Repadmin /removelingeringobjects childdc2.child.root. contoso.com 0b457f73-96a4-429b-ba81-1a3e0f51c848 «dc=child,dc=root,dc=contoso,dc=com» Repadmin /removelingeringobjects trdc1.treeroot. fabrikam.com 0c559ee4-0adc-42a7-8668-e34480f9e604 «dc=child,dc=root,dc=contoso,dc=com» REM Команды для удаления устаревших объектов REM из раздела DomainDNSZones-Child. Repadmin /removelingeringobjects childdc2.child.root. contoso.com 0c559ee4-0adc-42a7-8668-e34480f9e604 «dc=domaindnszones,dc=child,dc=root,dc=contoso,dc=com» REM Команды для удаления устаревших объектов REM из раздела домена TreeRoot. Repadmin /removelingeringobjects childdc1.child.root. contoso.com 0b457f73-96a4-429b-ba81-1a3e0f51c848 «dc=treeroot,dc=fabrikam,dc=com» Repadmin /removelingeringobjects childdc2.child.root. contoso.com 0b457f73-96a4-429b-ba81-1a3e0f51c848 «dc=treeroot,dc=fabrikam,dc=com» Repadmin /removelingeringobjects dc1.root.contoso.com 0b457f73-96a4-429b-ba81-1a3e0f51c848 «dc=treeroot,dc=fabrikam,dc=com» Repadmin /removelingeringobjects dc2.root.contoso.com 0b457f73-96a4-429b-ba81-1a3e0f51c848 «dc=treeroot,dc=fabrikam,dc=com»
Domain Controllers are the Most Crucial part of every AD Infrastructure and its best practice to ensure your running health checks and diagnostics on it regularly to ensure its health and functionality.
Today we’re going to take a deep dive into performing Domain Controller Health Checks & Best Practices.

The DCDiag tool is a Microsoft command-line utility that can be used to check the health of Active Directory domain controllers.
It is also used to diagnose DNS servers, AD replication, and other critical domain services within your Active Directory infrastructure.
These tests give you a brief overview of the overall health of your Active Directory Domain Controller.
This utility also allows you to check the health of all Domain Controller at a time.
With this utility, you can perform up to 30 different tests of your Active Directory Domain Controller to check its health status and other major issues that could be happening without you even knowing!
Some of the test performed by the DCDiag utility is shown below:
- Connectivity
Verify DNS registration for each domain controller and verify LDAP and RPC connections to each domain controller. - Advertising
Checks whether the domain controller is correctly reporting or not. - CheckSDRefDom
Checks that all application directory partitions have appropriate security descriptor reference domains. - CrossRefValidation
Checks the validity of cross-references for domains. - FRSEvent
Checks to see the errors in the file replication service. - FSMOCheck
Checks the connectivity between the domain controller and KDC, PDC and a global catalog server. - MachineAccount
Checks the registration status of the machine account. - NetLogons
Checks the appropriate logon permissions to allow replication to proceed. - Replications
Checks the replication status and errors between domain controllers. - RidManager
Checks whether the RID manager is accessible or not.
In this guide, we will show you how to check the health of your Active Directory Domain Controller with DCDiag utility.
Install DCDiag
If you running the modern Windows Server 2019/2016/2012R2 versions and have AD DS and RSAT roles installed, then you already have Dcdiag installed.
In previous versions of Windows Server, you need to download and install the DCDiag utility from the following link:
https://www.microsoft.com/en-us/download/details.aspx?id=31063

In a Client OS versions Windows 10/8.1/7, you will need to install the RSAT tool and then install the DCDiag utility manually from the Support Tools package.
Basic Syntax of DCDiag
The basic syntax of the DCDial utility is shown below:
dcdiag.exe /s:Domain-Controller [OPTIONS]
A brief explanation of each option is shown below:
- /s:Domain-Controller
Used to perform tests against the remote Domain Controller. - /u:domainusername
Allows you to specify the username of the remote Domain Controller. - /p:password
Allows you to specify the password of the remote Domain Controller user. - /a
Perform tests against all domain controllers. - /q
Only display an error message after testing the domain controller. - /v
Display detail information of each test. - /f
Save the test result to a specified file. - /test:testname
Used to perform only specific tests. - /skip:testname
Used to skip the specific DCDiag test.
The DCDiag is a command-line tool. So you can run it on a Command Prompt or PowerShell window as an Administrative user.
You can display the help information about the DCDiag utility using the following command:
dcdiag.exe /h
You should see the following output:
Directory Server Diagnosis
cdiag.exe /s:[:] [/u: /p:*||""]
[/hqv] [/n:] [/f:] [/x:XMLLog.xml]
[/skip:] [/test:]
/h: Display this help screen
/s: Use as Home Server. Ignored for DcPromo and
RegisterInDns tests which can only be run locally.
/n: Use as the Naming Context to test
Domains may be specified in Netbios, DNS or DN form.
/u: Use domainusername credentials for binding.
Must also use the /p option
/p: Use as the password. Must also use the /u option
/a: Test all the servers in this site
/e: Test all the servers in the entire enterprise. Overrides /a
/q: Quiet - Only print error messages
/v: Verbose - Print extended information
/i: ignore - ignores superfluous error messages.
/c: Comprehensive, runs all tests, including non-default tests but excluding
DcPromo and RegisterInDNS. Can use with /skip
/fix: fix - Make safe repairs.
/f: Redirect all output to a file seperately
/x: Redirect xml output to . Currently works with /test:dns option only
/xsl: Adds the processing instructions that references specified stylesheet. Works with /test:dns /x: option only
/test: - Test only this test. Required tests will still
be run. Do not mix with /skip.
/skip: - Skip the named test. Required tests will still
be run. Do not mix with /test.
Run DCDiag on a Local Domain Controller
To perform the Domain Controller test on your local system, run the DCDiag utility without any argument:
dcdiag.exe
You should see the following screen:

Run DCDiag on a Remote Server
If you want to check the health of a remote domain controller, run the DCDiag utility by specifying your remote domain controller name, administrator username and password as shown below:
dcdiag.exe /s:webserveradc.com /u:webserveradc.comAdministrator /p:password
You should see the tests result in the following screen:

Run DCDiag with Verbose Output
You can run the DCDiag utility with /v switch to display the results with more information.
dcdiag.exe /s:webserveradc.com /v
You should see the following screen:

Run DCDiag and Save the Result to a File
If you want to save the test results in a file then you can use /f switch with DCDiag command as shown below:
dcdiag.exe /s:webserveradc.com f:c:dcdiag.txt
This command will perform tests and save results in a file dcdiag.txt, or whatever you name it!
You can open this file as shown below:

Run DCDiag to Test DNS
You can also test your DNS using the /test:dns switch as shown below:
dcdiag.exe /s:webserveradc.com /test:dns
You should see the results in the following screen:

Run DCDiag Against all Domain Controllers
If you have multiple domain controllers in your environment and want to perform tests against all domain controllers, then you can use /a switch with the DCDiag utility:
dcdiag.exe /s:webserveradc.com /a
Run DCDiag to Display Only Error Messages
If you want to remove the additional information from the test results and only want to display errors, you can use /q switch as shown below:
dcdiag.exe /s:webserveradc.com /q
If you found any errors after running the above command, you can fix it using the following command:
dcdiag.exe /s:webserveradc.com /fix
Run DCDiag to Perform Specific Test
The DCDiag utility also allows you to perform only specific tests by specifying its name.
For example, to perform only NetLogons test, you’ll run the following command:
dcdiag.exe /s:webserveradc.com /test:NetLogons
You should see the following screen:

You can also exclude a specific test from the checklist using the /skip switch.
For example, exclude the Replication test from the test results, run the following command:
dcdiag.exe /s:webserveradc.com /skip:Replication
You should see the following screen:

Conclusion
Congratulations! you have successfully tested your Domain Controller with all available options using DCDiag utility.
We hope you have now enough understanding and knowledge of how to troubleshoot Domain Controller related issues with the DCDiag utility.