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

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

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

Get-ADDomainController інформація про поточний контролері домену

Командлет повернув все поля з інформацією про контроллер домена, доступною в 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
SslPort : 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

Список Get-ADDomainController

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

Get-ADDomainController -Filter * | Measure-Object

кол-во контролерів домену в ad

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

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

отримати список DC з IP адресами та іменами

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

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

отримати DC з стороннього домен

Використовуємо 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

Get-ADDomainController - отримати список контролерів домену в сайті AD

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

Leave a Reply

Your email address will not be published. Required fields are marked *