搜索GC副本并查找AD帐户

时间:2015-03-17 09:15:27

标签: powershell active-directory exchange-server

我遇到了与AD复制有关的问题。我们使用第三方应用程序在AD中创建帐户,然后使用powershell脚本(由应用程序调用)来创建交换帐户。 在第三方应用中,我们无法判断广告帐户是在哪个GC上创建的,因此必须等待20分钟才能进行复制。

我想要做的是找到哪个GC帐户已创建或被复制到并使用....连接到该服务器。

set-adserversettings -preferredserver $ADserver

我目前有以下脚本,而我无法解决的是当它找到帐户并将该GC分配给$ ADserver变量时停止它。写主机线仅用于测试。

$ForestInfo = [System.DirectoryServices.ActiveDirectory.Forest]::GetCurrentForest()
$GCs = $ForestInfo.FindAllGlobalCatalogs()
Import-module activedirectory

ForEach ($GC in $GCs)
{
Write-Host $GC.Name
Get-aduser $ADUser
}

TIA

安迪

1 个答案:

答案 0 :(得分:0)

您可以检查Get-ADUser是否返回超过0个对象,以确定GC是否满足您的查询。之后,使用Set-ADServerSettings -PreferredGlobalCatalog配置首选项

您需要指定要搜索全局编录而不仅仅是本地目录。可以从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"
}