我有以下疑问
$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 左右)上的配置的解决方案不是一个选项。
有人有什么建议吗?
我今天也遇到了这个问题。您要做的就是获取具有成员属性的组:
$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。
Get-ADGroupMember 可以返回的对象数量受到 Active Directory Web 服务中的限制。除非配置文件中提供了不同的值,否则限制为 5,000。
因此,如果您尝试获取包含超过 5,000 个对象的组的成员信息,则会违反限制,并且 PowerShell 将发出错误,通知超出了请求的限制。
这篇文章解释了获得相同结果的多种方法。