Cómo realizar consultas LDAP en PowerShell

  1. Instalando el módulo de Active Directory en PowerShell
  2. Utilizar el parámetro Filter para filtros de PowerShell
  3. Utilizar el parámetro -LDAPFilter para filtros LDAP en PowerShell
Cómo realizar consultas LDAP en PowerShell

Uno de los desafíos más comunes al consultar Active Directory con PowerShell es cómo construir la sintaxis de filtro correctamente.

Desafortunadamente, los parámetros Filter y LDAP Filter en todos los cmdlets del módulo de Active Directory de PowerShell son una caja negra para muchos.

Este artículo profundizará en la comprensión de cómo utilizar filtros de Active Directory y filtros LDAP.

Instalando el módulo de Active Directory en PowerShell

Hay algunos requisitos previos necesarios antes de proceder.

  • Módulo de Active Directory de PowerShell instalado.
  • Computadora unida al dominio.
  • Conectarse y autenticarse con éxito a un controlador de dominio de Active Directory.

Por lo general, ejecutar el comando Install-Module debería obtener el paquete de un CDN remoto e instalarlo en su computadora. Sin embargo, con el módulo de Active Directory, debemos establecer un paquete previo para tener éxito.

Necesitamos instalar el paquete previo que es RSAT o Remote Server Administration Tools.

Puede ejecutar los scripts de PowerShell a continuación para instalar el RSAT en su computadora o en el servidor.

Instalando RSAT para Windows 10:

Add-WindowsCapability -Name Rsat.ActiveDirectory.DS-LDS.Tools~~~~0.0.1.0 -Online

Instalando Remote Server Administration Tools para Windows Server (Múltiples versiones desde 2008 a 2016):

Install-WindowsFeature -Name "RSAT-AD-PowerShell" -IncludeAllSubFeature

Instalar la característica de Remote Server Administration Tools en su máquina también instalará el módulo de Active Directory para Windows PowerShell.

Utilizar el parámetro Filter para filtros de PowerShell

Los filtros de PowerShell utilizan la sintaxis estándar de expresiones de Windows PowerShell. Este método se conoce comúnmente como sintaxis de filtro de búsqueda de Active Directory.

Estos filtros se utilizan con el parámetro Filter.

Dentro del filtro, comparará varias propiedades de objetos AD utilizando operadores. Por ejemplo, el comando Get-ADUser devuelve una propiedad Name.

Así que, si quisiéramos encontrar todos los usuarios que coincidan con un nombre específico, usaríamos:

Get-ADUser -Filter "Name -eq 'John'"

Los nombres de las propiedades pueden ser el nombre LDAP o el nombre canónico de la propiedad devuelta por el cmdlet de Active Directory.

Los valores de las propiedades suelen estar entre comillas simples o dobles. El único comodín aceptado es el asterisco *.

Podemos ver arriba que las comillas dobles rodean el filtro, mientras que John está cubierto con comillas simples.

Utilizar el parámetro -LDAPFilter para filtros LDAP en PowerShell

El Protocolo de Acceso Ligero a Directorios, o LDAP, es un protocolo neutral de proveedores para acceder y modificar datos de directorio.

Podemos pensar en una guía telefónica al escuchar la palabra directorio, pero esto significa mucho más en el contexto de Active Directory.

Se almacenan y se hacen accesibles muchos tipos de objetos diferentes por AD, con el protocolo LDAP funcionando para asegurar esos datos. Dado que AD puede mantener muchos tipos de datos diferentes, las aplicaciones y los usuarios necesitan consultar ese directorio con facilidad.

Active Directory implementa LDAP, el Protocolo de Acceso Ligero a Directorios. Utilizar el parámetro -LDAPFilter con los cmdlets le permite usar filtros LDAP, como los creados en Usuarios y Computadoras de Active Directory.

La sintaxis para los filtros de búsqueda LDAP está definida en el RFC número 4515. Cada regla de filtro está rodeada por paréntesis ().

Aquí hay algunos ejemplos de uso de filtros de grupos de Active Directory como base para comenzar a crear los suyos.

  • Todos los grupos con un nombre (CN) de Department.
`'(cn=Department)'
  • Todos los grupos con un nombre de Department y una descripción de Prod.
'(&(cn=Department)(description=Prod))'
  • Todos los grupos con un nombre de Department o Share Access.
'(|(cn=Professional Services Department)(cn=Share Access))'
  • Todos los grupos que no tienen una descripción de Prod. Incluye aquellos sin campo de descripción en absoluto.
'(!(description=Prod))'
  • Todos los grupos con una descripción de Prod pero no con un nombre de Department.
'(&(description=Prod)(!(cn=Department)))'
  • Todos los grupos cuya descripción es \\fileserver1\share.
'(description=\5c\5cfileserver1\5cshare)'
¿Disfrutas de nuestros tutoriales? Suscríbete a DelftStack en YouTube para apoyarnos en la creación de más guías en vídeo de alta calidad. Suscríbete
Marion Paul Kenneth Mendoza avatar Marion Paul Kenneth Mendoza avatar

Marion specializes in anything Microsoft-related and always tries to work and apply code in an IT infrastructure.

LinkedIn