HOWTO · PowerShell

Cómo realizar consultas LDAP en PowerShell

Prepare el módulo de Active Directory y luego elija filtros de expresión de PowerShell o filtros de búsqueda LDAP para las consultas de directorio.

En esta página

Para consultar Active Directory, use el parámetro Filter con la sintaxis de expresiones de PowerShell cuando esa sea la sintaxis admitida por el cmdlet. Use -LDAPFilter cuando desee escribir un filtro de búsqueda LDAP. Ambos enfoques requieren el módulo de Active Directory y una conexión autenticada a un controlador de dominio. Las secciones siguientes cubren la configuración, una búsqueda de usuario y patrones de filtro de grupos LDAP.

Instalación del módulo de Active Directory en PowerShell

Antes de realizar consultas, instale el módulo de Active Directory, use un equipo unido al dominio y autentíquese en un controlador de dominio. El módulo lo proporcionan las Herramientas de administración remota del servidor (RSAT); Install-Module por sí solo no lo instala.

En las ediciones de cliente de Windows compatibles, la capacidad RSAT se puede agregar con Add-WindowsCapability -Name Rsat.ActiveDirectory.DS-LDS.Tools~~~~0.0.1.0 -Online. En las ediciones de Windows Server que proporcionan la característica, use Install-WindowsFeature -Name RSAT-AD-PowerShell -IncludeAllSubFeature. Estos comandos dependen de la plataforma y de la versión; compruebe que la capacidad o la característica se aplica al sistema operativo de destino y ejecute el comando en una sesión de PowerShell con los permisos elevados adecuados. La instalación del componente RSAT proporciona el módulo de Active Directory para Windows PowerShell.

Uso del parámetro Filter para consultas de Active Directory

El parámetro Filter del módulo de Active Directory acepta la sintaxis de expresiones de PowerShell. Compare las propiedades de directorio admitidas con operadores como -eq y entrecomille los valores de cadena. El comodín * coincide con texto dentro de un valor de cadena. Por ejemplo, una búsqueda de usuario por nombre puede escribirse como Get-ADUser -Filter "Name -eq 'John'". Consulte la documentación del cmdlet específico o la salida de Get-Help para ver sus parámetros admitidos y las propiedades que se pueden filtrar; la compatibilidad de parámetros y los nombres de las propiedades pueden variar según el cmdlet.

Este ejemplo autónomo construye una cadena de filtro para una búsqueda por departamento. Reemplace el valor de ejemplo al adaptarlo a una consulta; la propia consulta de Active Directory requiere el módulo y el acceso al dominio descritos anteriormente.

$department = 'Engineering'
$filter = "Department -eq '$department'"
Write-Output $filter
Department -eq 'Engineering'

Este ejemplo se ejecutó y produjo la cadena de filtro mostrada arriba; construye una cadena y no contacta con ningún directorio. Mantenga la expresión de PowerShell dentro del valor pasado a -Filter.

Uso del parámetro -LDAPFilter para consultas LDAP

LDAP es un protocolo independiente del proveedor para acceder a datos de directorio y modificarlos. Por sí mismo no protege los datos de directorio; use las protecciones de autenticación y transporte configuradas para su entorno. Active Directory implementa LDAP, y su sintaxis de filtro de búsqueda está definida en RFC 4515. Cada regla de filtro está encerrada entre paréntesis. Cuando un cmdlet admite -LDAPFilter, este parámetro acepta la sintaxis de filtro de búsqueda LDAP; compruebe los parámetros admitidos del cmdlet correspondiente antes de elegirlo.

Los siguientes son valores de filtro para Get-ADGroup -LDAPFilter. Son ilustraciones de sintaxis, no comandos independientes, y sus resultados dependen del directorio:

  • Grupos cuyo nombre común (cn) sea Department: Get-ADGroup -LDAPFilter '(cn=Department)'.
  • Grupos cuyo nombre común sea Department y cuya descripción sea Prod: Get-ADGroup -LDAPFilter '(&(cn=Department)(description=Prod))'.
  • Grupos cuyo nombre común sea Professional Services Department o Share Access: Get-ADGroup -LDAPFilter '(|(cn=Professional Services Department)(cn=Share Access))'.
  • Grupos cuya descripción no sea Prod, incluidas las entradas sin ese atributo: Get-ADGroup -LDAPFilter '(!(description=Prod))'.
  • Grupos cuya descripción sea Prod excluyendo el nombre común Department: Get-ADGroup -LDAPFilter '(&(description=Prod)(!(cn=Department)))'.
  • Una descripción que contenga la ruta \\fileserver1\share: Get-ADGroup -LDAPFilter '(description=\5c\5cfileserver1\5cshare)'. En un filtro LDAP, \5c representa una barra invertida literal; escape los caracteres especiales de filtro en los valores según RFC 4515 al construir filtros a partir de entradas.