在多个域之一上查找用户

时间:2016-06-03 19:40:05

标签: powershell active-directory

我正在尝试运行一个脚本,但我仍然在同一个问题上运行,我在同一个林中都有域A,B和C;但当我尝试做简单的命令,如

  

禁用-ADAccount -Identity $ User

我无法完成它,因为它无法在域B中找到用户,用户位于域A中。

所以问题是,有没有办法让脚本检查“User1”的所有域(A,B,C)并对它们执行禁用操作。 (除设置开关外)

  

-server

1 个答案:

答案 0 :(得分:2)

我最近遇到了这个问题,最后编写了一个函数来获取用户的ADUser对象。您可以使用该对象轻松地禁用用户。

Function Get-DomainUser{
Param([String]$Alias)
BEGIN{$GCs = Get-ADForest|select -expand GlobalCatalogs|?{($_ -match "^(.*?)\.(.+?)$")}|%{[pscustomobject]@{'Server' = $matches[1];'Region' = $matches[2];'FQDN' = $_}}|group region|%{$_.group|select -first 1}
}
PROCESS{
    $DomUser = Get-ADUser -Filter {samAccountName -eq $Alias} -Prop DisplayName
    If(([string]::IsNullOrEmpty($DomUser.Name))){
        ForEach($GC in $GCs){
            $DomUser = Get-ADUser -Filter {samAccountName -eq $Alias} -Server $GC.FQDN -Prop DisplayName
            If(!([string]::IsNullOrEmpty($DomUser.Name))){Break}
        }
    }
    $DomUser
}
}

这将获取全局编录服务器列表,按站点对它们进行分组,然后每个站点只获得1个服务器。然后它尝试获取用户,如果当前用户失败,则它会尝试每个站点,直到找到用户为止。