Las consultas LDAP se pueden utilizar para buscar diferentes objetos (equipos, usuarios, grupos) en la base de datos LDAP de Active Directory según determinados criterios. Para realizar una consulta LDAP en el catálogo LDAP de AD, puede usar varias utilidades (por ejemplo, ldapsearch), secuencias de comandos de PowerShell o VBS, la función Consultas guardadas en el complemento MMC Usuarios y equipos de Active Directory, etc.

En este artículo, veremos algunos ejemplos útiles de consultas LDAP a AD y cómo ejecutarlas.

¿Cómo ejecutar la consulta LDAP?

Primero, veamos algunos ejemplos de ejecución de consultas LDAP (Protocolo ligero de acceso a directorios). Por ejemplo, desea realizar una consulta LDAP simple para buscar usuarios de Active Directory que tengan habilitada la opción "El usuario debe cambiar la contraseña en el próximo inicio de sesión". El código para esta consulta LDAP es el siguiente:

(objectCategory=person)(objectClass=user)(pwdLastSet=0)(!useraccountcontrol:1.2.840.113556.1.4.803:=2)

Intentemos ejecutar esta consulta LDAP usando la consola ADUC.

  1. Abra la consola ADUC y vaya a la Consultas guardadas sección;
  2. Crear una nueva consulta: Nuevo > Consulta;
  3. Especifique un nombre para la nueva consulta guardada y haga clic en el Definir consulta botón;
  4. Selecciona el Búsqueda personalizada escriba, vaya a la Avanzado y copie su código de consulta LDAP en el Introducir consulta LDAP campo;
    consulta del directorio activo
  5. Haga clic en Aceptar dos veces, seleccione su nueva consulta en el árbol de Consultas guardadas de ADUC y presione F5;
  6. Debería aparecer una lista de usuarios de AD que coincidan con esta consulta LDAP en el panel derecho.
    consultas ldap

También puede usar el filtro de consulta LDAP en los siguientes cmdlets de PowerShell: Get-ADUser, Get-ADComputer, Get-ADGroup y Get-ADObject (estos cmdlets forman parte del módulo Active Directory PowerShell). Cada uno de estos cmdlets tiene un parámetro LdapFilter que está diseñado específicamente para usar filtros LDAP al buscar objetos en Active Directory.

Por ejemplo, para ejecutar la consulta de búsqueda LDAP anterior con Get-ADUser, abra la consola powershell.exe y ejecute el comando:

Get-ADUser -LDAPFilter '(objectCategory=person)(objectClass=user)(pwdLastSet=0)(!useraccountcontrol:1.2.840.113556.1.4.803:=2)'

Para buscar equipos, use el cmdlet Get-ADComputer:

Get-ADComputer –LDAPFilter ‘your ldap query’

Para buscar grupos de distribución y seguridad de Active Directory en AD, use el cmdlet Get-ADGroup:

Get-ADGroup –LDAPFilter {LDAP_query}

Si no conoce el tipo de objeto de Active Directory que está buscando, puede usar el cmdlet genérico Get-ADObject:

Get-ADObject -LdapFilter "(cn=*Brion*)"

En este ejemplo, encontramos que el filtro LDAP proporcionado coincide con el usuario Jon Brion y el grupo BrionTeam.

Si necesita encontrar objetos de un tipo específico, puede especificar el tipo de objeto mediante el parámetro objectClass. Por ejemplo:

Get-ADObject -LdapFilter "(&(objectClass=user)(cn=*Brion*))"

consulta ldap del directorio activo

Windows tiene varias herramientas integradas, como dsget y dsquery, que le permiten ejecutar consultas LDAP en Active Directory,

La utilidad dsquery devuelve el nombre distinguido de un objeto que coincide con los parámetros especificados y, para los filtros LDAP, tiene un filtrar parámetro. Por ejemplo, para buscar a todos los usuarios cuyo puesto de trabajo empiece por Gerenteejecute el comando:

dsquery * OU=Employees,DC=theitbros,DC=com -filter "(&(objectCategory=person)(objectClass=user)(Title=Manager*))"

Sintaxis del filtro LDAP

La forma de texto de los filtros de búsqueda LDAP se define en RFC 4515. La sintaxis de un filtro LDAP es:

<Filter>=(<Attribute><comparison operator><value>)

Los siguientes operadores de comparación se pueden utilizar en un filtro:

Operador
= Igual
>= más o igual
<= menor o igual
~= Aproximadamente igual

Por ejemplo, el siguiente filtro devuelve todos los objetos con valor de atributo cn (nombre común) Jon:

(cn=Jon)

Los filtros se pueden combinar mediante operadores booleanos cuando existen múltiples condiciones de búsqueda.

Operador
& Y — se deben cumplir todas las condiciones
| O — se puede cumplir cualquier número de condiciones
! NOT — la condición no debe cumplirse

Por ejemplo, seleccionemos objetos AD con cn igual a Jon y sn (apellido) igual a Brion:

(&(cn=Jon)(sn=Brion))

Puede usar varios operadores lógicos en un filtro a la vez, lo principal es no confundirse entre paréntesis. Compongamos un filtro que devolverá objetos con cn igual a Jon o sn igual a Briónpara cual cn no es igual a Alex:

(&(|(cn=Jon)(sn=Brion)(!(cn=Alex)))

Puede refinar los objetos de búsqueda utilizando el categoría de objeto y clase de objeto atributos

Parámetros válidos: persona, usuario, contacto, computadora, grupos.

Usando el siguiente filtro, seleccione todos los usuarios llamados Jon:

(&(objectClass=user)(objectCategory=person)(cn=Jon))

Ejemplos de consultas LDAP para Active Directory

Consideremos algunos ejemplos útiles de consultas LDAP que los administradores de AD suelen utilizar.

Busque administradores en grupos Administradores de dominio, Administradores de empresa:

(objectClass=user)(objectCategory=Person)(adminCount=1)

Enumere todos los usuarios de AD excepto los bloqueados:

(objectCategory=person)(objectClass=user)(!useraccountcontrol:1.2.840.113556.1.4.803:=2)

Mostrar la lista de cuentas de usuario deshabilitadas:

(objectCategory=person)(objectClass=user)(useraccountcontrol:1.2.840.113556.1.4.803:=16)

Seleccione usuarios con la opción "La contraseña nunca caduca" habilitada:

(objectcategory=user)(userAccountControl:1.2.840.113556.1.4.803:=65536)

Usuarios con valor de correo electrónico vacío:

(objectcategory=person)(!mail=*)
List users with the Sales specified in the Department field:

(&(objectCategory=person)(objectClass=user)(department=Sales))

Puede obtener una lista de usuarios con membresía en un grupo específico de Active Directory:

(&(objectclass=user)(samacccountname=*)(MemberOf=CN=UKManagers,OU=Groups,OU=UK,DC=theitbros,DC=com))

Puede enumerar los grupos de los que el usuario es miembro:

(&(objectCategory=group)(member=CN=Jon Brion,OU=Employees,DC=theitbros,DC=com))

Enumere todas las cuentas de computadora deshabilitadas en AD:

(&(objectClass=computer)(userAccountControl:1.2.840.113556.1.4.803:=2))

Mostrar todas las computadoras con Windows 10:

(objectCategory=computer)(operatingSystem=Windows 10*)

Solo puede seleccionar equipos con una versión específica de Windows 10:

(&(&(objectCategory=computer)(operatingSystem=Windows 10*)(operatingSystemVersion=*19041*)))

Insinuación. Puede asignar la compilación de Windows 10 a la versión de acuerdo con la siguiente tabla:

Versión de Windows 10 Número de compilación
20H2 19042
2004 19041
1909 18363
1903 18362
1809 17763

Todos los controladores de dominio:

(&(objectCategory=computer)(userAccountControl:1.2.840.113556.1.4.803:=8192))

Todos los servidores de dominio miembro (excepto DC):

(&(objectCategory=computer)(operatingSystem=*server*)(!userAccountControl:1.2.840.113556.1.4.803:=8192))

Todas las instancias de MS SQL Server en AD:

(&(objectCategory=computer)(servicePrincipalName=MSSQLSvc*))

Lista de grupos creados para el período especificado:

(objectCategory=group)(whenCreated>=20200101000000.0Z&<=20201201000000.0Z&)

Enumere todos los grupos de AD vacíos:

(objectCategory=group)(!member=*)

Listar todos los grupos de distribución:

(&(objectCategory=group)(!groupType:1.2.840.113556.1.4.803:=2147483648))

Imprima todos los grupos con la clave *CIO* en el nombre del grupo:

(objectCategory=group)(samaccountname=*CIO*)

Encuentre todos los servidores de Exchange en el dominio:

(objectCategory=computer)(servicePrincipalName=exchangeMDB*)(operatingSystem=Windows Server*)

Todas las impresoras a color en un servidor de impresión específico publicado en AD:

(uncName=*lon-prnt*)(objectCategory=printQueue)(printColor=TRUE)

Recomendado para ti