командлет 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 і т.д.