Cmdlet Get-ADDomainController można użyć do uzyskania informacji o kontrolerach domeny w usłudze Active Directory. To polecenie cmdlet jest częścią modułu Active Directory dla programu PowerShell i wymaga instalacji osobnego komponentu RSAT (w systemie Windows 10 1809 i nowszym RSAT jest instalowany w nowy sposób).
Treść
- Polecenie cmdlet Get-ADDomainController
- Używamy Get-ADDomainController do wybierania kontrolerów domeny zgodnie z warunkami
- Skrypt PowerShell, aby sprawdzić dostępność wszystkich kontrolerów domeny
Polecenie cmdlet Get-ADDomainController
Przy starcie Get-ADDomainController
bez parametrów cmdlet wyświetla informacje o bieżącym kontrolerze domeny (LogonServer), który jest używany przez ten komputer do uwierzytelniania (DC jest wybierany podczas rozruchu zgodnie z topologią witryn AD).
Polecenie cmdlet zwróciło wszystkie pola z informacjami kontrolera domeny dostępnymi w AD.
ComputerObjectDN: CN = mskDC01, OU = Kontrolery domeny, DC = corp, DC = winitpro, DC = ru Domyślna partycja: DC = corp, DC = winitpro, DC = ru Domena: corp.winitpro.ru Włączone: 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 Nazwa: Ustawienia mskDC NT NT CN = Serwery, CN = MskCenter, CN = Witryny, CN = Konfiguracja, DC = winitpro, DC = pl OperatingSystem: Windows Server 2008 R2 Standard OperatingSystemHotfix: OperatingSystemServicePack: Service Pack 1 OperatingSystemVersion: 6.1 (7601) OperationMasterRoles: Partycje: Partycje: DC = ForestDnsZones, DC = winitpro, DC = ru, DC = DomainDnsZones, DC = corp, DC = winitpro, DC = ru, CN = Schemat, CN = Konfiguracja, DC = winitpro, DC = ru ... ServerObjectDN: CN = mskDC01 , CN = Serwery, CN = MskCenter, CN = Witryny, CN = Konfiguracja, DC = winitpro, DC = ru ServerObjectGuid: 8052323-e294-4430-a326-9553234431d6 Witryna: MskCenter SslPo rt: 636
Możesz również znaleźć kontroler domeny, do którego powinien należeć twój komputer, poprzez mechanizm DCLocator:
Get-ADDomainController -Discover
Możesz znaleźć najbliższy dostępny kontroler domeny z aktywną rolą usług AD w sieci Web:
Get-ADDomainController -ForceDiscover -Discover -Service ADWS
Za pomocą parametru Service można znaleźć kod PDC w domenie:
Get-ADDomainController -Discover -Service PrimaryDC
Jeśli nie znaleziono kontrolera domeny lub nie odpowiada, możesz go znaleźć w najbliższej witrynie AD (na podstawie wagi komunikacji między lokacjami):
Get-ADDomainController -Discover -ForceDiscover -NextClosestSite
Aby wyświetlić listę wszystkich kontrolerów domeny w bieżącej domenie:
Get-ADDomainController -Filter * | ft
Możesz obliczyć liczbę kontrolerów domeny w AD za pomocą polecenia:
Get-ADDomainController -Filter * | Zmierz obiekt
Wyświetlimy wygodniejszą tabelę, w której wymienione są wszystkie kontrolery domeny z ich nazwą, adresem IP, wersją systemu operacyjnego i nazwą witryny AD:
Get-ADDomainController -Filter * | Wybierz Nazwa, ipv4Address, OperatingSystem, site | Nazwa obiektu sortowania
Jeśli chcesz uzyskać informacje o kontrolerze domeny z innej domeny, musisz podać nazwę dowolnego dostępnego kontrolera domeny w domenie innej firmy za pomocą parametru -Serwer (możliwe przy zaufaniu między domenami).
Get-ADDomainController -Filter * -server dc01.contoso.cpm | Wybierz Nazwa, ipv4Address, IsGlobalCatalog, Site
Używamy Get-ADDomainController do wybierania kontrolerów domeny zgodnie z warunkami
Spójrzmy na kilka przydatnych poleceń cmdlet, których możesz użyć, aby uzyskać listę kontrolerów domeny w AD według określonych kryteriów.
Znajdź kontroler domeny według jego adresu IP:
Get-ADDomainController -Identity „10.1.1.120”
Znajdź wszystkie kontrolery domeny ze znakami DC04 w ich nazwach:
Get-ADDomainController -Filter jak nazwa „* dc04 *” | Wybierz Nazwa, ipv4Address, OperatingSystem, site
Wyszukaj wszystkie dostępne kontrolery domeny w określonej witrynie:
Get-ADDomainController -Discover -ForceDiscover -Site „Site-Name”
Wyświetl listę DC w witrynach, których nazwy zaczynają się od Mos *:
Get-ADDomainController -Filter podobny do strony „Mos *” | Wybierz Nazwa, ipv4Address, OperatingSystem, site
Wyświetl wszystkie kontrolery domeny tylko do odczytu:
Get-ADDomainController -Filter IsReadOnly -eq $ true | Wybierz Nazwa, ipv4Address, OperatingSystem, site
Znajdź DC w witrynie „Nazwa witryny”, która obejmuje rolę katalogu globalnego:
Get-ADDomainController -Filter site -eq „Site Name” -i IsGlobalCatalog -eq $ true | Wybierz Nazwa, ipv4Address, OperatingSystem, site
Skrypt PowerShell, aby sprawdzić dostępność wszystkich kontrolerów domeny
Poniższy projekt umożliwia iterację na wszystkich kontrolerach domeny w usłudze Active Directory i wykonanie określonej akcji dla każdego z nich:
$ AllDCs = Get-ADDomainController -Filter *
ForEach ($ DC w $ AllDCs)
zrób coś
Poniżej znajduje się przykład prostego skryptu PowerShell, który sprawdza dostępność portu LDAPS (TCP 636) na każdym kontrolerze domeny w domenie za pomocą polecenia cmdlet Test-NetConnection. Jeśli port LDAPS w DC nie jest dostępny, pojawi się ostrzeżenie.
$ AllDCs = Get-ADDomainController -Filter * | Select-Object Hostname, Ipv4address, isGlobalCatalog, Site, Forest, OperatingSystem
ForEach ($ DC w $ AllDCs)
$ PortResult = Test-NetConnection -ComputerName $ DC.Hostname -Port 636 -InformationLevel Quiet
if ($ PortResult -ne „$ True”)
write-host $ DC.Hostname „niedostępny” -BackgroundColor Red -ForegroundColor White
else
write-host $ DC.Hostname „available”
W rezultacie powstał prosty skrypt monitorowania dostępności DC. Nadal istnieją różne scenariusze wyliczania wszystkich kontrolerów domeny w domenie. W poprzednich artykułach pokazaliśmy już, jak używać Get-ADDomainController do wyszukiwania określonego zdarzenia w dziennikach na wszystkich kontrolerach domeny. Na przykład, aby: wyszukać zdarzenia blokady konta użytkownika, wyszukać zdarzenia uwierzytelniania NTLMv1, wyszukać zdarzenia, gdy użytkownik zostanie dodany do grupy AD itp..