Saltar al contenido

Get-ADGroupMember: se excedió el límite de tamaño para esta solicitud

Mantén la atención ya que en este enunciado hallarás el arreglo que buscas.

Solución:

El número de objetos que Get-ADGroupMember puede devolver está restringida por un límite en el ADWS (Active Directory Web Services):

MaxGroupOrMemberEntries

5000

Especifica el número máximo de miembros del grupo (recursivos o no recursivos), pertenencias a grupos y grupos de autorización que puede recuperar el módulo de Active Directory Get-ADGroupMember, Get-ADPrincipalGroupMembershipy Get-ADAccountAuthorizationGroup cmdlets. Establezca este parámetro en un valor más alto si prevé que estos cmdlets devolverán más de 5000 resultados en su entorno.

De acuerdo con este hilo, debería poder solucionarlo consultando objetos de grupo y expandiendo su member propiedad (si no puede aumentar el límite del servicio):

Get-ADGroup $group -Properties Member |
    Select-Object -Expand Member |
    Get-ADUser -Property Name, DisplayName

Sin embargo, tenga en cuenta que es probable que esto sea lento, ya que enviará miles de solicitudes. Podría ser mejor construir una tabla hash de todos los usuarios:

$users = @
Get-ADUser -Filter '*' -Property Name, DisplayName | ForEach-Object 
    $users[$_.DistinguishedName] = $_

para que puedas buscarlos por su nombre distinguido:

Get-ADGroup $group -Properties Member |
    Select-Object -Expand Member |
    ForEach-Object  $users[$_] 

Estaba llegando al límite de 5000 con Get-ADGroupMember.

Puede usar Get-ADUser con el parámetro -LDAPFilter para obtener miembros del grupo. Es rápido y admite >5000 entradas.

$groups = @(
    "group1"
    "group2"
    "group3"
)

Foreach ($group in $groups)  Export-Csv "C:$group.csv"

Parece que puedes construir filtros complejos con este método. Necesitaba devolver rápidamente miembros habilitados de algunos grupos extremadamente grandes. El filtro que usé para esto fue:

"(&(objectCategory=user)(!useraccountcontrol:1.2.840.113556.1.4.803:=2)(memberof=CN=$group,OU=Groups,OU=rest,DC=of,DC=distinguished,DC=name))"

Escuché que esto es una limitación de los servicios web de AD que realmente atienden las solicitudes de los cmdlets de PowerShell. El tamaño máximo es 5000. Pero puede probar el comando dsget, aunque necesitará ser un poco creativo.

$GroupDN = (Get-ADGroup -Identity $Group).DistinguishedName le dará el DN del grupo.

Utilizar el DSget Me gusta esto.

$members = DSget group $GroupDN -members Esto le dará la lista de DN de todos los miembros.

Alimenta eso a un Get-ADUser cmdlet en una tubería o foreach bucle y listo.

Si piensas que ha resultado de ayuda este artículo, sería de mucha ayuda si lo compartes con el resto juniors así contrubuyes a dar difusión a esta información.

¡Haz clic para puntuar esta entrada!
(Votos: 0 Promedio: 0)



Utiliza Nuestro Buscador

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *