Get-ADDomainController:通过 PowerShell 获取域控制器信息
您可以使用 Get-ADDomainController PowerShell cmdlet 获取有关 Active Directory 中域控制器的信息。此 cmdlet 是 PowerShell Active Directory 模块的一部分,需要安装 RSAT(在 Windows 10 1809 和更高版本上,RSAT 以不同的方式安装)。
获取 ADDomainController Cmdlet
在不带任何参数的情况下运行 Get-ADDomainController 时,cmdlet 将显示有关此计算机用于进行身份验证的当前域控制器 (LogonServer) 的信息(根据 AD 站点和 IP 子网拓扑选择 DC)。
该 cmdlet 返回所有字段,其中包含有关 Active Directory 数据库中可用域控制器的信息。
ComputerObjectDN : CN=MunDC01,OU=Domain Controllers,DC=corp,DC=a-d,DC=com
DefaultPartition : DC=corp,DC= a-d,DC=com
Domain : corp.a-d.site
Enabled : True
Forest : a-d.site
HostName : MunDC01.corp.a-d.site
InvocationId : 921234a-2a32-4312-9e12-3b32343ab4ad
IPv4Address : 192.168.1.6
IPv6Address :
IsGlobalCatalog : True
IsReadOnly : False
LdapPort : 389
Name : MunDC01
NTDSSettingsObjectDN : CN=NTDS Settings,CN=MunDC01,CN=Servers,CN=DE,CN=Sites,CN=Configuration,DC=a-d,DC=com
OperatingSystem : Windows Server 2012 R2 Standard
OperatingSystemHotfix :
OperatingSystemServicePack :
OperatingSystemVersion : 6.3 (9600)
OperationMasterRoles : {}
Partitions : {DC=ForestDnsZones,DC=a-d,DC=com, DC=DomainDnsZones,DC=corp,DC=a-d,DC=com, CN=Schema,CN=Configuration,DC=a-d,DC=com...}
ServerObjectDN : CN=MunDC01,CN=Servers,CN=DE,CN=Sites,CN=Configuration,DC=a-d,DC=com
ServerObjectGuid : 8123453-e294-1234-a987-1234535432d6
Site : DE
SslPort : 636
此外,您还可以通过 DCLocator 服务找到您的计算机应所属的域控制器:
Get-ADDomainController -Discover
您可以找到具有活动 AD Web 服务角色的最近的可用 DC:
Get-ADDomainController -ForceDiscover -Discover -Service ADWS您可以使用 Service 参数查找域中的 PDC(或其他 FSMO 角色):
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 的一些信息,请使用 -Server 参数指定另一个域中任何可用 DC 的名称(在启用域之间的信任关系的情况下是可能的)。
Get-ADDomainController -Filter * -server dc01.test.com | Select Name, ipv4Address, IsGlobalCatalog, Site
使用 Get-ADDomainController 按特定条件查找域控制器
让我们考虑一些有用的命令,您可以使用这些命令根据特定条件获取 AD 中的域控制器列表。
要通过 IP 地址查找域控制器:
Get-ADDomainController -Identity "192.168.100.6"要查找名称中包含 DC02 的所有 DC:
Get-ADDomainController -Filter {name -like "*dc02*"} | Select Name, ipv4Address, OperatingSystem, site要查找特定站点上的所有可用 DC:
Get-ADDomainController -Discover -ForceDiscover -Site "Site-Name"要显示站点上名称以 Mun* 开头的 DC 列表:
Get-ADDomainController -Filter {site -like "Mun*"} | Select Name, ipv4Address, OperatingSystem, site显示所有只读域控制器 (RODC) 的列表:
Get-ADDomainController -Filter {IsReadOnly -eq $true} | Select Name, ipv4Address, OperatingSystem, site要在“罗马”站点上查找启用了全局目录角色的 DC:
Get-ADDomainController -Filter {site -eq "Rome" -and IsGlobalCatalog -eq $true} | Select Name, ipv4Address, OperatingSystem, site用于检查所有域控制器可用性的 PowerShell 脚本
下一个 PowerShell 脚本允许逐一检查域控制器并为每个域控制器执行特定操作:
$DCs = Get-ADDomainController -Filter *
ForEach($DC in $DCs)
{
do something
}以下是一个简单的 PowerShell 脚本示例,该脚本使用 Test-NetConnection cmdlet 检查域中每个 DC 上的 LDAPS 端口 (TCP 636) 的可用性。如果 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 " not available" -BackgroundColor Red -ForegroundColor White
}else {
write-host $DC.Hostname " available" -BackgroundColor Green -ForegroundColor White}
}
我们有一个简单的脚本来监控您域中所有 DC 的可用性。
还有不同的场景来一一检查域中的所有DC。在之前的文章中,我们展示了如何使用 Get-ADDomainController cmdlet 在所有域控制器的日志中查找特定事件。例如,查找用户帐户锁定事件、NTLMv1身份验证事件、将用户添加到AD安全组的事件等。





