Get-ADDomainController: получение информации о контроллерах домена через PowerShell


Вы можете использовать командлет PowerShell Get-ADDomainController для получения информации о контроллерах домена в Active Directory. Этот командлет является частью модуля Active Directory для Windows PowerShell, который может быть установлен как на Windows Server, так и на рабочих станциях Windows. Подробности смотрите в статье «Как установить и использовать Модуль Active Directory для Windows PowerShell».

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

Get-ADDomainController выводит информацию об одном или нескольких контроллеров домена Active Directory на основе критериев обнаруживаемых служб, параметров поиска или путём предоставления идентификатора контроллера домена, например имени NetBIOS.

Командлет Get-ADDomainController получает контроллеры домена, указанные в параметрах. Вы можете получить контроллеры домена, используя опции -Identity, -Filter или -Discover.

При запуске Get-ADDomainController без каких-либо параметров командлет отображает информацию о текущем контроллере домена (LogonServer), используемом этим компьютером для проверки подлинности (контроллер домена выбирается в соответствии с топологией IP-подсети сайта AD):

Get-ADDomainController

Командлет вернул все поля с информацией о контроллере домена, доступной в базе данных Active Directory.

ComputerObjectDN           : CN=HACKWARE-SERVER,OU=Domain Controllers,DC=ds,DC=hackware,DC=ru
DefaultPartition           : DC=ds,DC=hackware,DC=ru
Domain                     : ds.hackware.ru
Enabled                    : True
Forest                     : ds.hackware.ru
HostName                   : HackWare-Server-2022.ds.hackware.ru
InvocationId               : bf704d68-01ea-4e3d-83fe-6f556ca09e14
IPv4Address                : 192.168.1.60
IPv6Address                : fd28:62f2:dde3:0:4def:bfd5:11ad:1fe2
IsGlobalCatalog            : True
IsReadOnly                 : False
LdapPort                   : 389
Name                       : HACKWARE-SERVER
NTDSSettingsObjectDN       : CN=NTDS Settings,CN=HACKWARE-SERVER,CN=Servers,CN=Default-First-Site-Name,CN=Sites,CN=Configuration,DC=ds,DC=hackware,DC=ru
OperatingSystem            : Windows Server 2022 Standard
OperatingSystemHotfix      :
OperatingSystemServicePack :
OperatingSystemVersion     : 10.0 (20348)
OperationMasterRoles       : {SchemaMaster, DomainNamingMaster, PDCEmulator, RIDMaster…}
Partitions                 : {DC=ForestDnsZones,DC=ds,DC=hackware,DC=ru, DC=DomainDnsZones,DC=ds,DC=hackware,DC=ru, CN=Schema,CN=Configuration,DC=ds,DC=hackware,DC=ru, CN=Configuration,DC=ds,DC=hackware,DC=ru…}
ServerObjectDN             : CN=HACKWARE-SERVER,CN=Servers,CN=Default-First-Site-Name,CN=Sites,CN=Configuration,DC=ds,DC=hackware,DC=ru
ServerObjectGuid           : 1eb9f6f2-1fcd-446f-a0db-80b356e27673
Site                       : Default-First-Site-Name
SslPort                    : 636

Примеры использования Get-ADDomainController

Чтобы получить контроллер домена с помощью механизма обнаружения DCLocator, используйте опцию -Discover. Вы можете указать критерии поиска, задав такие опции, как -Service, -SiteName, -DomainName, -NextClosestSite, -AvoidSelf и -ForceDiscover.

Также вы можете найти контроллер домена, которому должен принадлежать ваш компьютер, через службу -DCLocator:

Get-ADDomainController -Discover

Следующая команда получит один доступный контроллер домена на указанном сайте:


Get-ADDomainController -Discover -Site "Default-First-Site-Name"

Опция -ForceDiscover указывает командлету очистить всю кэшированную информацию о контроллере домена и выполнить новое обнаружение. Если этот параметр не указан, командлет может возвращать кэшированные сведения о контроллере домена.

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

Эта команда получает один доступный контроллер указанного домена в данном домене с помощью обнаружения.

Get-ADDomainController -Discover -Domain "user01.com"

Вы можете найти ближайший доступный контроллер домена с активной ролью веб-служб AD:

Get-ADDomainController -ForceDiscover -Discover -Service ADWS

Опция -Service задаёт типы получаемых контроллеров домена. Вы можете указать более одного типа, используя список, разделённый запятыми. Допустимые значения для этого параметра:

  • PrimaryDC или 1
  • GlobalCatalog или 2
  • KDC или 3
  • TimeService или 4
  • ReliableTimeService или 5
  • ADWS или 6

Пример использования опции -Service для поиска PDC (Primary Domain Controller Emulator) в вашем домене:


Get-ADDomainController -Discover -Service PrimaryDC

Эта команда ищет компьютер с функцией Глобального каталога в текущем лесу:

Get-ADDomainController -Discover -Service "GlobalCatalog"

Эта команда получает основной контроллер домена с помощью обнаружения и проверяет, используется ли он в качестве сервера времени.

Get-ADDomainController -Discover -Domain "corp.contoso.com" -Service "PrimaryDC","TimeService"

Если ваш контроллер домена не найден или не отвечает, вы можете найти его на ближайшем сайте AD (определяется весом межсайтовых ссылок):

Get-ADDomainController -Discover -ForceDiscover -NextClosestSite

Чтобы найти и получить более одного контроллера домена, используйте опцию -Filter.

Чтобы отобразить список всех контроллеров домена в текущем домене, выполните такую команду:

Get-ADDomainController -Filter * | Format-Table

Используя следующую команду, вы можете подсчитать количество контроллеров домена в AD:

Get-ADDomainController -Filter * | Measure-Object

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

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

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

Get-ADDomainController -Filter * -Server dc01.test.com | Select Name,ipv4Address, IsGlobalCatalog,Site

Использование Get-ADDomainController для поиска контроллеров домена по определенным критериям

Давайте рассмотрим несколько полезных команд, которые вы можете использовать для получения списка контроллеров домена в AD по определенным критериям.

Опция -Identity указывает контроллер домена, который нужно получить. Вы можете идентифицировать контроллер домена по его GUID, IPV4Address, глобальному IPV6Address или имени узла DNS.

Чтобы найти контроллер домена по его IP-адресу:

Get-ADDomainController -Identity "192.168.100.6"

Эта команда получает контроллер домена, используя его NetBIOS имя.

Get-ADDomainController -Identity "PDC-01"

Эта команда получает контроллер домена, используя его имя хоста DNS, в домене, указанном параметром -Site, указанным в параметре -Server, и с указанием учётных данных администратора.

Get-ADDomainController -Identity "TK5-CORP-DC-10.user01.com" -Server "user01.com" -Credential "corp\administrator"

Чтобы найти все контроллеры домена, в именах которых есть DC02:

Get-ADDomainController -Filter {name -like "*dc02*"} | Select Name,ipv4Address,OperatingSystem,site

Чтобы отобразить список контроллеров домена на сайтах, имена которых начинаются с «Mun*»:

Get-ADDomainController -Filter {site -like "Mun*"} | Select Name,ipv4Address,OperatingSystem,site

Чтобы отобразить список всех контроллеров домена только для чтения (RODC):

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

Чтобы найти контроллеры домена на сайте «Rome» с включённой ролью глобального каталога:

Get-ADDomainController -Filter {site -eq "Rome" -and IsGlobalCatalog -eq $true} | Select-Object Name,ipv4Address,OperatingSystem,site

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

Следующий скрипт PowerShell позволяет поочерёдно проверять контроллеры домена и выполнять для каждого из них определённые действия:

$DCs = Get-ADDomainController -Filter *
ForEach-Object($DC in $DCs)
{
	действия
}

Вот пример простого скрипта PowerShell, который проверяет доступность порта LDAPS (TCP 636) на каждом контроллере домена в вашем домене с помощью командлета Test-NetConnection. Если порт LDAPS недоступен, появится предупреждение.

$DCs = Get-ADDomainController -Filter * | Select-Object Hostname,Ipv4address,isGlobalCatalog,Site,Forest,OperatingSystem
ForEach($DC in $DCs)
{
	$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 " доступен" -BackgroundColor Green -ForegroundColor White}
}


Получился простой скрипт для отслеживания доступности всех контроллеров домена в вашем домене.

Также существуют разные сценарии для проверки всех контроллеров домена по очереди.


Рекомендуется Вам:

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *