Get-ADDomainController отримуємо інформацію про контролерах домена AD за допомогою PowerShell

командлет Get-ADDomainController можна використовувати для отримання інформації про контролерах домену в Active Directory. Даний командлет входить до складу модуля Active Directory для PowerShell і вимагає установки окремого компонента RSAT (в Windows 10 1809 і вище RSAT встановлюється по-новому).

зміст:

  • Командлет Get-ADDomainController
  • Використовуємо Get-ADDomainController для вибірки контролерів домену за умовами
  • PowerShell скрипт перевірки доступності всіх контролерів домену

Командлет Get-ADDomainController

При запуску Get-ADDomainController без параметрів командлет виводить інформацію про поточний контролері домену (LogonServer), який використовується комп'ютером для аутентифікації (DC вибирається при завантаженні відповідно до топології сайтів AD).

Командлет повернув все поля з інформацією про контроллер домена, доступною в AD.

ComputerObjectDN: CN = mskDC01, OU = Domain Controllers, DC = corp, DC = winitpro, DC = ru DefaultPartition: DC = corp, DC = winitpro, DC = ru Domain: corp.winitpro.ru Enabled: True Forest: winitpro.ru HostName: mskDC01.corp.winitpro.ru InvocationId: 96234a-7fc6-4a32-9e62-3b32343ab4ad IPv4Address: 10.1.10.6 IPv6Address: IsGlobalCatalog: True IsReadOnly: False LdapPort: 389 Name: mskDC01 NTDSSettingsObjectDN: CN = NTDS Settings, CN = mskDC01, CN = Servers, CN = MskCenter, CN = Sites, CN = Configuration, DC = winitpro, DC = ru OperatingSystem: Windows Server 2008 R2 Standard OperatingSystemHotfix: OperatingSystemServicePack: Service Pack 1 OperatingSystemVersion: 6.1 (7601) OperationMasterRoles:  Partitions:  DC = ForestDnsZones, DC = winitpro, DC = ru, DC = DomainDnsZones, DC = corp, DC = winitpro, DC = ru, CN = Schema, CN = Configuration, DC = winitpro, DC = ru ... ServerObjectDN: CN = mskDC01 , CN = Servers, CN = MskCenter, CN = Sites, CN = Configuration, DC = winitpro, DC = ru ServerObjectGuid: 8052323-e294-4430-a326-9553234431d6 Site: MskCenter SslPo rt: 636

Також ви можете знайти контролер домену, до якого повинен відноситься ваш комп'ютер через механізм DCLocator:

Get-ADDomainController -Discover

Ви можете знайти найближчий доступний DC з активною роллю AD Web Services:

Get-ADDomainController -ForceDiscover -Discover -Service ADWS

Параметр Service можна використовувати, щоб знайти PDC в домені:

Get-ADDomainController -Discover -Service PrimaryDC

Якщо ваш контролер домену не знайдено або не відповідає, ви можете знайти контролер домену в найближчому сайті AD (визначається за вагою міжсайтових зв'язків):

Get-ADDomainController -Discover -ForceDiscover -NextClosestSite

Щоб вивести список все контролерів домену в поточному домені, виконайте:

Get-ADDomainController -Filter * | ft

Порахувати кількість контролерів домену в AD можна за допомогою команди:

Get-ADDomainController -Filter * | Measure-Object

Виведемо більш зручну таблицю, в якій вказані всі контролери домену з їх ім'ям, IP адресою, версією ОС і ім'ям сайту AD:

Get-ADDomainController -Filter * | Select Name, ipv4Address, OperatingSystem, site | Sort-Object name

Якщо вам потрібно отримати інформацію про DC з іншого домену, потрібно вказати ім'я будь-якого доступного DC в сторонньому домені за допомогою параметра -Server (Можливо при наявності довірчих відносин між доменами).

Get-ADDomainController -Filter * -server dc01.contoso.cpm | Select Name, ipv4Address, IsGlobalCatalog, Site

Використовуємо Get-ADDomainController для вибірки контролерів домену за умовами

Розглянемо кілька корисних командлетів, які можна використовувати для отримання списку контролерів домену в AD за певними критеріями.

Знайти контролер домену по його IP адресою:

Get-ADDomainController -Identity "10.1.1.120"

Знайти всі DC, в імені яких є символи DC04:

Get-ADDomainController -Filter name -like "* dc04 *" | Select Name, ipv4Address, OperatingSystem, site

Пошук всіх доступних DC в певному сайті:

Get-ADDomainController -Discover -ForceDiscover -Site "Site-Name"

Вивести список DC в сайтах, імена яких починаються з Mos *:

Get-ADDomainController -Filter site -like "Mos *" | Select Name, ipv4Address, OperatingSystem, site

Вивести список всіх Read Only контролерів домену:

Get-ADDomainController -Filter IsReadOnly -eq $ true | Select Name, ipv4Address, OperatingSystem, site

Знайти DC в сайті "Site Name", на яких включена роль Global Catalog:

Get-ADDomainController -Filter site -eq "Site Name" -and IsGlobalCatalog -eq $ true | Select Name, ipv4Address, OperatingSystem, site

PowerShell скрипт перевірки доступності всіх контролерів домену

Наступна конструкція дозволяє перебрати всі контролери домену в Active Directory і виконати для кожного з них певним чином впливати:

$ AllDCs = Get-ADDomainController -Filter *
ForEach ($ DC in $ AllDCs)

do something

Нижче наведено приклад простого PowerShell скрипта, який перевіряє доступність LDAPS порту (TCP 636) на кожному DC в домені за допомогою командлета Test-NetConnection. Якщо LDAPS порт на DC не доступний, з'являється попередження.

$ AllDCs = Get-ADDomainController -Filter * | Select-Object Hostname, Ipv4address, isGlobalCatalog, Site, Forest, OperatingSystem
ForEach ($ DC in $ AllDCs)

$ PortResult = Test-NetConnection -ComputerName $ DC.Hostname -Port 636 -InformationLevel Quiet
if ($ PortResult -ne "$ True")
write-host $ DC.Hostname "не доступний" -BackgroundColor Red -ForegroundColor White
Else
write-host $ DC.Hostname "доступний"

Вийшов простий скрипт моніторингу доступності DC. Їсть ще різні сценарії перебору всіх DC в домені. У попередніх статтях ми вже показували, як використовувати Get-ADDomainController для пошуку певної події в журналах на всіх контролерів домену. Наприклад, для: пошуку події блокування облікового запису користувача, пошуку подій NTLMv1 аутентифікації, пошуку подій доданні в групу AD і т.д.