Get-ADDomainController: получаем информацию о контроллерах домена AD с помощью PowerShell

Командлет 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=remontka,DC=ru DefaultPartition : DC=corp,DC=remontka,DC=ru Domain : corp.remontka.com Enabled : True Forest : remontka.com HostName : mskDC01.corp.remontka.com 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=remontka,DC =ru OperatingSystem : Windows Server 2008 R2 Standard OperatingSystemHotfix : OperatingSystemServicePack : Service Pack 1 OperatingSystemVersion : 6.1 (7601) OperationMasterRoles : {} Partitions : {DC=ForestDnsZones,DC=remontka,DC=ru, DC=DomainDnsZones,DC=corp,DC=remontka,DC=ru, CN=Schema,CN=Configuration,DC=remontka,DC=ru...} ServerObjectDN : CN=mskDC01,CN=Servers,CN=MskCenter,CN=Sites,CN=Configuration,DC=remontka,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 list

Посчитать количество контроллеров домена в AD можно с помощью команды:

Get-ADDomainController -Filter * | Measure-Object

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

Выведем более удобную таблицу, в которой указаны все контроллеры домена с их именем, IP адресом, версией ОС и именем сайта AD:

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

получить список DC с IP адресами и именами

Если вам нужно получить информацию о DC из другого домена, нужно указать имя любого доступного DC в стороннем домене с помощью параметра –Server (возможно при наличии доверительных отношений между доменами).

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 и т.д.

EnglishRussianUkrainian