当前位置:网站首页 > 更多 > 玩电脑 > 正文

[玩转系统] Get-ADGroupMember:超出了此请求的大小限制

作者:精品下载站 日期:2024-12-14 18:40:04 浏览:14 分类:玩电脑

Get-ADGroupMember:超出了此请求的大小限制


Get-ADGroupMember cmdlet 非常适合从组中获取 AD 成员。但是,这次您运行 Get-ADGroupMember cmdlet 并收到错误:Get-ADGroupMember:超出了此请求的大小限制。为什么会发生这种情况?该错误的解决方案是什么?

Get-ADGroupMember:超出了此请求的大小限制

我们有 AD 组 SG_Azure_A,并且希望使用 PowerShell 获取该组的所有成员。

[玩转系统] Get-ADGroupMember:超出了此请求的大小限制

以管理员身份运行 PowerShell 并运行 Get-ADGroupMember cmdlet 以获取组 SG_Azure_A 的所有成员。

PS C:\> Get-ADGroupMember -Identity "SG_Azure_A" | Select-Object Name | Sort-Object Name

运行上述命令后,PS中的输出显示错误:

Get-ADGroupMember : The size limit for this request was exceeded
At line:1 char:1
+ Get-ADGroupMember -Identity "SG_Azure_A" | Select-Object Name | Sort- ...
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    + CategoryInfo          : NotSpecified: (SG_Azure_A:ADGroup) [Get-ADGroupMember], ADException
    + FullyQualifiedErrorId : ActiveDirectoryServer:8227,Microsoft.ActiveDirectory.Management.Commands.GetADGroupMember

Get-ADGroupMember:超出了此请求的大小限制
位于第 1 行:1 个字符:1

为什么我们会收到此错误,Get-ADGroupMember : 超出此请求的大小限制的解决方案是什么?

Get-ADGroupMember 的最大大小限制为 5000

要检索的群组成员的最大数量为5000。因此,如果组中的成员数量超过 5000 人限制,则会显示错误:Get-ADGroupMember:超出了此请求的大小限制

让我们看看下一步如何解决这个错误。

Get-ADGroupMember 的解决方案:超出了此请求的大小限制

对于错误Get-ADGroupMember:超出此请求的大小限制有两种解决方案。

解决方案 1:运行 Get-ADGroup cmdlet

Get-ADGroup cmdlet 与 Get-ADGroupMember cmdlet 不同。优点是获取群组成员没有限制。

按可分辨名称获取组成员。

PS C:\> Get-ADGroup 'SG_Azure_A' -Properties Member | Select-Object -ExpandProperty Member | Sort

按名称获取组成员。

PS C:\> Get-ADGroup "SG_Azure_A" -Properties Member | Select-Object -ExpandProperty Member | Get-ADObject | Select Name | Sort Name

统计该组中的成员。

PS C:\> ((Get-ADGroup "SG_Azure_A" -Properties member).member).count

将组成员导出到 CSV 文件。

在此示例中,它将结果导出到 C:\temp 目录中的文件 exportmembers.csv

PS C:\> Get-ADGroup "SG_Azure_A" -Properties Member | Select-Object -ExpandProperty Member | Get-ADObject | Select Name | Sort Name  | Export-Csv "C:\temp\exportmembers.csv" -Encoding UTF8 -NoTypeInformation

这就是 CSV 文件的样子。

[玩转系统] Get-ADGroupMember:超出了此请求的大小限制

将源组中的所有成员复制到目标组。

PS C:\> Add-ADGroupMember -Identity "SG_Azure_B" -Members (Get-ADGroup "SG_Azure_A" -Properties member).member

解决方案 2:更改 ADWS 配置参数

ADWS(Active Directory Web 服务)为在此服务器上本地运行的目录服务(AD DS 和 AD LDS)实例提供 Web 服务接口。如果服务被停止或禁用,客户端应用程序(例如 Active Directory PowerShell)将无法访问或管理服务器上本地运行的任何目录服务实例。

您需要添加的参数是MaxGroupOrMemberEntries,请按照以下步骤操作:

1. 登录域控制器

2.使用记事本打开以下文件。

C:\Windows\ADWS\Microsoft.ActiveDirectory.WebServices.exe.config

[玩转系统] Get-ADGroupMember:超出了此请求的大小限制

3.复制以下文本和键

    <!--Specifies the maximum number of group members (recursive or non-recursive), group memberships, and authorization 
    groups that can be retrieved by the Active Directory module Get-ADGroupMember, Get-ADPrincipalGroupMembership, and 
    Get-ADAccountAuthorizationGroup cmdlets. Set this parameter to a higher value if you anticipate these cmdlets to
    return more than 5000 results in your environment.-->

    <add key="MaxGroupOrMemberEntries" value="50000"/>

MaxGroupOrMemberEntries 配置参数仅适用于三个 Active Directory 模块 cmdlet:Get-ADGroupMember、Get-ADPrincipalGroupMembership 和 Get-ADAccountAuthorizationGroup。

4.文本和密钥粘贴到配置文件中。

在此示例中,该值设置为 50000(这将检索 50000 个项目)。

[玩转系统] Get-ADGroupMember:超出了此请求的大小限制

5.保存配置文件。

6. 在PowerShell中运行命令重新启动ADWS服务。

PS C:\> Restart-Service -Name ADWS

7. 运行 Get-ADGroupMember cmdlet 获取组成员或将成员从一个 AD 组复制到另一个 AD 组。

PS C:\> Get-ADGroupMember -Identity "SG_Azure_A" | Select-Object Name | Sort-Object Name

就是这样!

了解更多:使用 PowerShell 导出 AD 组成员 »

结论

您了解了为什么会出现错误 Get-ADGroupMember :超出了此请求的大小限制。此问题的解决方案是改用 Get-ADGroup cmdlet。另一种方法是在 ADWS 配置文件中添加 MaxGroupOrMemberEntries 参数。之后,您可以运行 Get-ADGroupMember cmdlet。

您喜欢这篇文章吗?您可能还喜欢使用 PowerShell 比较 AD 组成员。不要忘记关注我们并分享这篇文章。

您需要 登录账户 后才能发表评论

取消回复欢迎 发表评论:

关灯