Заметки о Windows и других программных продуктах Microsoft...

Как найти все контроллеры домена

Как найти все контроллеры домена

Как вы думаете, сколько есть способов получить список контроллеров домена? Давайте посчитаем. Для примера возьмет тестовый домен с оригинальным именем TEST.LOCAL, в котором есть один контроллер домена с еще более оригинальным 🙂 именем DC-TEST.

Первый способ, которым я обычно пользуюсь — утилита командной строки Netdom. Для получения списка контроллеров домена воспользуемся командой:

Netdom query DC

вывод списка контроллеров домена с помощью утилиты Netdom

 

Второй пойдет утилита Nltest. Выведем список контроллеров командой:

Nltest /dclist:test.local

вывод списка контроллеров домена с помощью утилиты Nltest

 

Способ третий — утилита DSQUERY, специально предназначенная для поиска объектов в Active Directory. Найти контроллеры домена с ее помощью можно так:

DSQUERY server -o rdn

или так:

DSQUERY server

вывод списка контроллеров домена с помощью утилиты DSQUERY

 

Перейдем к PowerShell. Поименно вывести контроллеры домена можно командой:

Get-ADDomainController -Filter * | select Name

вывод списка контроллеров домена с помощью PowerShell

 

Переходим к нестандартным методам поиска. Выведем список контроллеров с помощью утилиты Nslookup. Каждый контроллер домена регистрирует в DNS запись SRV вида _ldap._tcp.dc._msdcs.domain.com, по которой его и можно найти. Для поиск по DNS воспользуемся командой:

Nslookup -type=all _ldap._tcp.dc._msdcs.test.local

вывод списка контроллеров домена с помощью nslookup

 

С помощью WMI в Windows можно сделать практически все, в том числе и получить список контроллеров домена. Для этого нам потребуется класс Win32_NTDomain, в котором помимо прочего хранятся имена контроллеров домена. Получить их можно из командной строки:

wmic NTDOMAIN GET DomainControllerName

или из PowerShell:

Get-WmiObject -Class win32_NTDomain | ft -a DomainControllerName

вывод списка контроллеров домена с помощью WMI

 

Ну и последний из известных мне способов. Все домен контроллеры являются членами группы «Domain Controllers», и для их получения остается только вывести список членов этой группы. Сделать это можно из командной строки:

net group "Domain Controllers" /domain

или из PowerShell:

Get-ADGroupMember -Identity "Domain Controllers" | select Name

ывод списка контроллеров домена с помощью членства в группе

 

Всего получается семь способов. Если знаете еще, пишите.

 
 
Комментарии

Пару замечаний.
1. Вместо «Netdom query DC» лучше использовать «netdom query /domain:test.local dc», она выдаст DC с нужного домена.
2. Запрос «Nslookup -type=all _ldap._tcp.dc._msdcs.test.local» не нужен, так как он возвращает из общей DNS зоны все DC по лесу. Если хочется искать через DNS, то для этого есть команда «nltest /dnsgetdc:test.local». Легко запоминается, удобный вывод, поиск DC по доменам и сайтам. К тому же именно её выполняет компьютер когда ищет любые DC и DC своего сайта.

«wmic NTDOMAIN GET DomainControllerName» выдаст только logonserver, а не все

Leave a Reply to MG