Powershell - Get-AdGroupMember 超出限制

问题描述 投票:0回答:2

我有以下疑问

$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 = 获取 ADGroupMember -Recursive -identity $Group |选择名称,... + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + 类别信息:未指定:(70206804-1c23-4e47-8e9e-e8fb7c688826:ADGroup) [Get-ADGroupMember], AD异常 +FullyQualifiedErrorId:超出了此请求的大小限制,Microsoft.ActiveDirectory.Management.Commands.GetADGroupMember

我想不出一种方法来解决这个问题,因为更改所有域控制器(300 左右)上的配置的解决方案不是一个选项。

有人有什么建议吗?

powershell active-directory
2个回答
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。


0
投票

Get-ADGroupMember 可以返回的对象数量受到 Active Directory Web 服务中的限制。除非配置文件中提供了不同的值,否则限制为 5,000。

因此,如果您尝试获取包含超过 5,000 个对象的组的成员信息,则会违反限制,并且 PowerShell 将发出错误,通知超出了请求的限制。

这篇文章解释了获得相同结果的多种方法。

© www.soinside.com 2019 - 2024. All rights reserved.