Diversas herramientas no muestran todos los miembros de un grupo en el Directorio Activo

Hola a todos.

En ocasiones, es posible que necesitemos inventariar los usuarios y/o grupos que tenemos en nuestro Directorio Activo.

En función del método que empleemos para extraer información, puede ser que los resultados obtenidos no sean los correctos o estén incompletos.

Sea, por ejemplo, el grupo big_group (un grupo Global de Seguridad en el dominio) que tiene unos 2000 miembros aproximadamente.

Si intentamos listar los miembros que tiene, obtenemos los siguientes resultados:

dsget group

En este caso, como podemos ver en la captura, la salida de la herramienta no nos devuelve resultados:

clip_image001

ldp.exe

La herramienta ldp.exe trunca los resultados obtenidos, no mostrando la totalidad de miembros del grupo:

Expanding base 'CN=big_group,CN=Users,DC=testdom,DC=local'...

Result <0>: (null)

Matched DNs:

Getting 1 entries:

>> Dn: CN=big_group,CN=Users,DC=testdom,DC=local

            2> objectClass: top; group;

            1> cn: big_group;

0> member:

            1500> member;range=0-1499: CN=user1,CN=Users,DC=testdom,DC=local; CN=user2,CN=Users,DC=testdom,DC=local; CN=user3,CN=Users,DC=testdom,DC=local; CN=user4,CN=Users,DC=testdom,DC=local; CN=user5,CN=Users,DC=testdom,DC=local;...

A través de la herramienta ntdsutil, podemos controlar una serie de parámetros para las políticas LDAP de los DCs del dominio.

Entre otros, tenemos la posibilidad de alterar el valor del parámetro MaxValRange el cual controla el número de valores que se devuelve en una query para cualquier atributo de un objeto en el AD.

Sin embargo, hemos de tener en cuenta diversas consideraciones antes de realizar cualquier cambio en estas políticas:

· Las políticas de LDAP son comunes a todos los DCs del forest. No es posible tener distintos DCs con valores distintos para cada parámetro.

· El hecho de incrementar el número máximo de valores por atributo que nos devuelve un DC (MaxValRange), puede provocar un impacto en el rendimiento de los Controladores de Dominio.

Este valor tomará efecto para todos los atributos de todos los objetos del Directorio Activo, y no sólo para miembros de un grupo o para otro atributo concreto que nos interese.

Tenéis disponible más información sobre el tema aquí:

315071 - How to view and set LDAP policy in Active Directory by using Ntdsutil.exe

https://support.microsoft.com/kb/315071

[…]

MaxValRange - This value controls the number of values that are returned for an attribute of an object, independent of how many attributes that object has, or of how many objects were in the search result. In Windows 2000, this control is "hard" coded at 1,000. If an attribute has more than the number of values that are specified by the MaxValRange value, you must use value range controls in LDAP to retrieve values that exceed the MaxValRange value. MaxValueRange controls the number of values that are returned on a single attribute on a single object.

Default value:

o Windows 2000 - 1,024

o Windows Server 2003 - 1,500

Como alternativa, y en caso de necesitar un listado de todos los miembros de un grupo (p.ej. de más de 1500 usuarios en Windows Server 2003), os proponemos el uso de scripts para realizar la tarea.

En el siguiente enlace podéis encontrar un ejemplo de implementación de esto:

Scripting Guy: List members of a group

https://www.microsoft.com/technet/scriptcenter/resources/qanda/apr05/hey0419.mspx

[…] It’s easy enough to list all the members of a group; for example, here’s a script that reports back all the members of the Finance Managers group:

 Set objGroup = GetObject _    ("LDAP://cn=Finance Managers, ou=Finance, dc=fabrikam, dc=com")For Each strUser on objGroup.Member        Wscript.Echo strUserNext

Un saludo a todos,

Javier Rama