Powershell - 获取超过限制的Ad组成员

3

我有以下查询

$Groups = (Get-AdGroup -filter * | Where     {
            ($_.name -like "*") 

} | select ObjectGUID -expandproperty ObjectGUID)


$Table = @()

$Record = [ordered]@{
    "Group _ObjectGUID" = ""
    "Name" = ""
    "SamAccountName" = ""
    "Member_ObjectGUID" = ""
}


Foreach ($Group in $Groups)
{
    $Arrayofmembers = Get-ADGroupMember -Recursive -identity $Group  | select name,samaccountname,ObjectGUID

    foreach ($Member in $Arrayofmembers)
    {
        $Record."Group _ObjectGUID" = $Group
        $Record."Name" = $Member.name
        $Record."SamAccountName" = $Member.SamAccountName
        $Record."Member_ObjectGUID" = $Member.ObjectGUID
        $objRecord = New-Object PSObject -property $Record
        $Table += $objrecord
    }

}

$Table | export-csv "C:\temp\AD_group_members.txt" -NoTypeInformation

然而,我无法执行此查询,因为它超过了5000个最大广告返回限制,具体返回以下错误消息:

Get-ADGroupMember:超出了此请求的大小限制。在第22行第20个字符处: + $Arrayofmembers = Get-ADGroupMember -Recursive -identity $Group | select name, ... + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + CategoryInfo:NotSpecified:(70206804-1c23-4e47-8e9e-e8fb7c688826:ADGroup) [Get-ADGroupMember], ADException + FullyQualifiedErrorId:The size limit for this request was exceeded,Microsoft.ActiveDirectory.Management.Commands.GetADGroupMember

我想不到任何方法来缩小它以避免此问题,因为更改所有域控制器(约300个)上的配置的解决方案不可行。
有人有什么建议吗?
1个回答

5
我今天也遇到了这个问题。你需要做的是获取具有成员属性的组:
$ADInfo = Get-ADGroup -Identity $Group -Properties Members

现在,$ADInfo保存了组及其成员。要获取成员列表:
$ADInfo.Members

如果您想获取成员的AD记录,请按照以下步骤操作:

$ADInfo.Members | Get-ADComputer

或者你可以把它们组合起来:

(Get-ADGroup -Identity $Group -Properties Members).Members | Get-ADComputer

我正在使用Get-ADComputer,但同样适用于Get-ADUser。

1
如果一个组中有子组,可以使用-recursive参数来处理get-adgroupmember,但是在使用-recursive参数时,get-adgroup、get-aduser和get-adcomputer会报错。有什么想法? - Moose

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接