搜索 GC 副本并找到 AD 帐户
Search GC replicas and find AD account
我有一个与 AD 复制有关的问题。我们使用第 3 方应用程序在 AD 中创建帐户,然后使用 powershell 脚本(由应用程序调用)创建交换帐户。
在第 3 方应用程序中,我们无法判断广告帐户是在哪个 GC 上创建的,因此必须等待 20 分钟才能进行复制。
我想做的是找到帐户创建或复制到的 GC,并使用....
连接到该服务器
set-adserversettings -preferredserver $ADserver
我目前有以下脚本,但我无法解决的问题是在找到帐户时让它停止并将该 GC 分配给 $ADserver 变量。 write-host 行仅用于测试。
$ForestInfo = [System.DirectoryServices.ActiveDirectory.Forest]::GetCurrentForest()
$GCs = $ForestInfo.FindAllGlobalCatalogs()
Import-module activedirectory
ForEach ($GC in $GCs)
{
Write-Host $GC.Name
Get-aduser $ADUser
}
TIA
安迪
您可以检查Get-ADUser
returns个对象是否超过0个来判断GC是否满足您的查询。之后,使用Set-ADServerSettings -PreferredGlobalCatalog
配置preference
您需要指定要搜索全局目录而不仅仅是本地目录。可以从 DC 上的 3268 端口访问全局目录,因此它变成这样:
$ForestInfo = [System.DirectoryServices.ActiveDirectory.Forest]::GetCurrentForest()
$GCs = $ForestInfo.FindAllGlobalCatalogs()
Import-module ActiveDirectory
$ADUserName = "someusername"
$ADDomainDN = "DC=child,DC=domain,DC=tld"
$FinalGlobalCatalog = $null
foreach ($GC in $GCs)
{
$GCendpoint = "{0}:3268" -f $GC.Name
$SearchResult = Get-ADUser -LDAPFilter "(&(samaccountname=$ADUserName))" -Server $GCEndpoint -SearchBase $ADDomainDN -ErrorAction SilentlyContinue
if(@($SearchResult).Count -gt 0){
$FinalGlobalCatalog = $GC
break
}
}
if($FinalGlobalCatalog){
Write-Host "Found one: $($FinalGlobalCatalog.Name)"
Set-ADServerSettings -PreferredGlobalCatalog $FinalGlobalCatalog.Name
} else {
Write-Host "Unable to locate GC replica containing user $ADUserName"
}
我有一个与 AD 复制有关的问题。我们使用第 3 方应用程序在 AD 中创建帐户,然后使用 powershell 脚本(由应用程序调用)创建交换帐户。 在第 3 方应用程序中,我们无法判断广告帐户是在哪个 GC 上创建的,因此必须等待 20 分钟才能进行复制。
我想做的是找到帐户创建或复制到的 GC,并使用....
连接到该服务器set-adserversettings -preferredserver $ADserver
我目前有以下脚本,但我无法解决的问题是在找到帐户时让它停止并将该 GC 分配给 $ADserver 变量。 write-host 行仅用于测试。
$ForestInfo = [System.DirectoryServices.ActiveDirectory.Forest]::GetCurrentForest()
$GCs = $ForestInfo.FindAllGlobalCatalogs()
Import-module activedirectory
ForEach ($GC in $GCs)
{
Write-Host $GC.Name
Get-aduser $ADUser
}
TIA
安迪
您可以检查Get-ADUser
returns个对象是否超过0个来判断GC是否满足您的查询。之后,使用Set-ADServerSettings -PreferredGlobalCatalog
配置preference
您需要指定要搜索全局目录而不仅仅是本地目录。可以从 DC 上的 3268 端口访问全局目录,因此它变成这样:
$ForestInfo = [System.DirectoryServices.ActiveDirectory.Forest]::GetCurrentForest()
$GCs = $ForestInfo.FindAllGlobalCatalogs()
Import-module ActiveDirectory
$ADUserName = "someusername"
$ADDomainDN = "DC=child,DC=domain,DC=tld"
$FinalGlobalCatalog = $null
foreach ($GC in $GCs)
{
$GCendpoint = "{0}:3268" -f $GC.Name
$SearchResult = Get-ADUser -LDAPFilter "(&(samaccountname=$ADUserName))" -Server $GCEndpoint -SearchBase $ADDomainDN -ErrorAction SilentlyContinue
if(@($SearchResult).Count -gt 0){
$FinalGlobalCatalog = $GC
break
}
}
if($FinalGlobalCatalog){
Write-Host "Found one: $($FinalGlobalCatalog.Name)"
Set-ADServerSettings -PreferredGlobalCatalog $FinalGlobalCatalog.Name
} else {
Write-Host "Unable to locate GC replica containing user $ADUserName"
}