КАК: Убедитесь, что контроллеры домена Active Directory имеют объект NTDS

Опубликовано: 16 Марта, 2023
КАК: Убедитесь, что контроллеры домена Active Directory имеют объект NTDS

Когда реализуется контроллер домена Active Directory, он создает необходимые объекты в Active Directory. В процессе установки контроллера домена на DNS-сервере создаются записи DNS, такие как записи SRV, записи узлов и объект NTDS, который включает некоторые важные параметры контроллера домена. Объект NTDS очень важен. Если объект NTDS для контроллера домена отсутствует, контроллер домена не может участвовать в репликации Active Directory.

Объект NTDS для контроллера домена виден через оснастку Active Directory Sites and Services. Хотя вы можете открыть оснастку «сайты и службы Active Directory» и убедиться, что на всех контроллерах домена создан объект NTDS, важно отметить, что в большой среде Active Directory, где есть сотни контроллеров домена, может потребоваться значительное количество времени для проверки объекта NTDS для всех контроллеров домена.

В этой статье представлен сценарий PowerShell, который можно использовать для обеспечения того, чтобы на всех контроллерах домена были созданы объекты NTDS. Если на контроллере домена не создан объект NTDS, этот контроллер домена считается потерянным контроллером домена в терминологии Active Directory.

Проверка объекта NTDS через оснастку AD Sites and Services

Чтобы проверить объекты NTDS для контроллера домена Active Directory, откройте оснастку Active Directory Sites and Services, а затем разверните контроллер домена, для которого вы хотите проверить объект NTDS, как показано в красном квадрате на снимке экрана.

Однако, если вы хотите проверить объекты NTDS для всех серверов, вы можете использовать приведенный ниже сценарий PowerShell. Сценарий создает отчет, содержащий контроллеры домена или серверы, на которых не создан объект NTDS.

Требования для запуска скрипта PowerShell

Обязательно запустите сценарий с рядового сервера или контроллера домена Windows Server 2012 R2 и создайте временную папку на диске C:, так как сценарий создает отчет с именем «OrpDCs.TXT» в папке C:. Временная папка. Выполнив эти требования, скопируйте сценарий в файл PS1 и выполните его из окна PowerShell с повышенными привилегиями.

Что делает скрипт?

Сценарий подключается к лесу Active Directory, к которому присоединен локальный компьютер, собирает все серверные объекты из Active Directory, фильтрует все серверы, связанные с классом «nTDSDSA», проверяет наличие объекта NTDS на контроллере домена и затем создает отчет в папке C:Temp.

Совет: Обратите внимание, что сценарий не выполняет никаких операций записи в Active Directory.

$TestCSVFile = "C:TempOrpDCs.TXT"
Удалить элемент $TestCSVFile -ErrorAction SilentlyContinue

$ThisString="Имя контроллера домена, лес Active Directory, окончательный статус"
Добавить содержимое “$TestCSVFile” $ThisString
$CurForestName = «TechGenix.com»

$TotNo=0
$TestStatus=""
$ТестТекст=""
$SumVal=""
$Config = (Get-ADRootDSE).configurationNamingContext
$Servers = Get-ADObject -Filter {ObjectClass -eq "Server"} -SearchBase "CN=Sites,$Config" -SearchScope Subtree
foreach ($Server в $Servers)
{
$Ntdsa = Get-ADObject -Filter {ObjectClass -eq «nTDSDSA»} -SearchBase «$(($Server).DistinguishedName)» -SearchScope Subtree
если ($Ntdsa)
{
}
еще
{
$ThisServer=$Server.DistinguishedName
$TotNo++
$Thisstr='"'+$ThisServer+'"'+","+$CurForestName+", "Не в порядке - на этом сервере нет объекта NTDS"
Добавить содержимое “$TestCSVFile” $ThisStr
}
}
ЕСЛИ ($Error.count -eq 0)
{
}
еще
{
$ErrorOrNot="Да"
}
ЕСЛИ ($ErrorOrNot -eq «Да»)
{
$TestText = «Ошибка».
$СумВал = ""
$TestStatus="Ошибка выполнения теста AD".
}
еще
{
ЕСЛИ ($TotNo -eq 0)
{
$TestText = «Не найдено ни одного контроллера домена, на котором нет объекта NTDS».
$ TestStatus = «Пройдено»
$SumVal=""
}
еще
{
$SumVal = $TotNo
$ TestStatus = «Высокий»
$TestText = «На нескольких контроллерах домена отсутствует объект NTDS»
}
}
$STR = $ADTestName +",""+$TestStartTime+"",+$TestStatus+"","+$SumVal +"",+$TestText

Совет. Обратите внимание, что сценарий PowerShell подключается к лесу Active Directory, к которому присоединен текущий компьютер. При запуске скрипта обязательно выполняйте его из командной строки PowerShell с повышенными привилегиями. Текущий пользователь, вошедший в систему, должен иметь достаточные разрешения для подключения к лесу Active Directory.

После завершения выполнения скрипта будет создан отчет, содержащий все имена контроллеров домена Active Directory и статус объекта NTDS, как показано в отчете ниже:

Как видно из отчета, скрипт собрал все контроллеры домена из текущего леса Active Directory и проверил состояние объектов NTDS для каждого контроллера домена в Active Directory. В столбце «Окончательное состояние» указано, есть ли у контроллера домена объект NTDS или нет. Как видите, «DC3.TechGenix.com», «DC4.TechGenix.com» и «DC6.TechGenix.com» не имеют объекта NTDS, поэтому сценарий сообщает « Не в порядке — на этом сервере нет объекта NTDS». » в столбце «Окончательный статус». Получив отчет, вы можете проверить, почему контроллер домена не имеет объекта NTDS.

Этот сценарий является частью динамических пакетов на основе PowerShell, которые поставляются с профилировщиком работоспособности Active Directory, который можно использовать для выполнения полной проверки работоспособности леса Active Directory. В AD Health Profiler включено 99 проверок работоспособности.