Cómo realizar consultas LDAP en PowerShell
- Instalando el módulo de Active Directory en PowerShell
-
Utilizar el parámetro
Filter
para filtros de PowerShell -
Utilizar el parámetro
-LDAPFilter
para filtros 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 deProd
.
'(&(cn=Department)(description=Prod))'
- Todos los grupos con un nombre de
Department
oShare 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 deDepartment
.
'(&(description=Prod)(!(cn=Department)))'
- Todos los grupos cuya descripción es
\\fileserver1\share
.
'(description=\5c\5cfileserver1\5cshare)'
Marion specializes in anything Microsoft-related and always tries to work and apply code in an IT infrastructure.
LinkedIn