Get-ADuser:从服务器返回了引荐

时间:2018-08-13 23:46:51

标签: powershell active-directory

运行脚本时出现以下错误:

Get-ADUser : A referral was returned from the server At line:25 char:70
+ ... -Identity $G.name -Recursive | Get-ADUser  -Server $dom -Properties *
+                                    ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    + CategoryInfo          : ResourceUnavailable: (CN=User...,DC=org:ADUser) [Get-ADUser], ADReferral    Exception
    + FullyQualifiedErrorId : ActiveDirectoryServer:****,Microsoft.ActiveDirectory.Management.Commands.GetADUser

这是我的脚本:

$Domains = (Get-ADForest).Domains.ForEach{(Get-ADDomain $_).PDCEmulator}

$Users = @()
$Groups = @()
$list = Get-Content C:\temp\ADGroups.txt
ForEach ($dom in $Domains) {
    Foreach ($o in $list) {
        $ObjectClass = (Get-ADObject -server $dom -Filter {SamAccountName -eq $o}).ObjectClass
        If ($ObjectClass -eq "User") {
            $U =  Get-ADUser -Properties * -Identity $o -Server $dom
            $User = "" | Select FullUserName, LoginID, Description
            $User.FullUserName = $U.DisplayName
            $User.LoginID = $U.SamAccountName
            $User.Description = $U.description
            $Users += $User
        } Else {
            If ($ObjectClass -eq "Group") {
                $G = Get-ADGroup -Properties * -Identity $o -Server $dom
                $GM = Get-ADGroupMember -Server $dom -Identity $G.name -Recursive | Get-ADUser  -Server $dom -Properties *
                Foreach ($gmember in $GM) {
                    $Group = "" | Select GroupName, GroupDescription, GroupMemberName, GroupMemberLoginID, GroupMemberDesc
                    $Group.GroupName = $G.Name
                    $Group.GroupDescription = $G.Description
                    $Group.GroupMemberName = $gmember.Name
                    $Group.GroupMemberLoginID = $gmember.SamAccountName
                    $Group.GroupMemberDesc = $gmember.Description
                    $Groups += $Group
                }
            }
        }
    }
}
$Users | Export-Csv C:\temp\Users.csv -NoTypeInformation
$Groups | Export-Csv C:\temp\Groups.csv -NoTypeInformation

我的脚本的目的是提取属于组的用户并导出到.csv文件。它在大多数情况下都有效,但对于某些用户却给我一个错误。我认为可能是因为该组中的那些用户属于不同的域。

2 个答案:

答案 0 :(得分:2)

请参阅this question中的答案。那里的答案表明您可以在异常中检索引用位置,然后对另一台服务器重试Get-ADUser。

您可能会重新考虑如何搜索所有这些组和用户。在整个林中复制用户。全球和通用团体也是如此。因此,您可以搜索全局目录,而不是遍历每个域中的一个DC。 Get-DomainController -GlobalCatalog并在该服务器的全局编录端口(即Get-ADUser -server $GCServerName:3268

上运行Get-AD *命令)

但是,请记住,GC不包含完整的用户和组属性,并且 返回的属性会受到复制延迟的影响。

这是否有用取决于您的域体系结构。在我自己的工作场所中,查询远程域控制器非常昂贵。不过,我们的站点域控制器是全局目录,因此在其中搜索林信息非常快。

答案 1 :(得分:1)

我认为您可以简单地将-ServerGet-ADUser中删除。由于Get-ADGroupMember返回的是ADPrincipal[]类型,因此每个用户都包含一个完全合格的DistinguishedName,这表示结果所来自的域(“服务器”)。

是的,您实际上认为(伪代码)是正确的:

"contoso.com\user" | Get-ADUser -Server "DC01.theOtherContoso.com"

将无法正常工作。并且从Get-ADGroupMember进行管道传输时,会出现错误:

  

Get-ADUser:从服务器返回了引荐

如果您运行相同的查询,但是从-Server部分省略了Get-ADUser部分,它将使用可分辨的名称来确定将信息提取到何处:

$GM = Get-ADGroupMember -Server $dom -Identity $G.name -Recursive | Get-ADUser -Properties *

它将返回您所需的用户对象。