General

El término Get-ADUser no se reconoce en PowerShell: solución

Portada del artículo «El término Get-ADUser no se reconoce en PowerShell: solución» de Trucos Informáticos

Abres PowerShell para consultar un usuario de Active Directory, escribes Get-ADUser y la consola responde con un error rojo: «El término ‘Get-ADUser’ no se reconoce como nombre de un cmdlet, función, archivo de script o programa ejecutable» (en inglés, «The term ‘Get-ADUser’ is not recognized as the name of a cmdlet, function, script file, or operable program»). Es uno de los errores más frecuentes al empezar con la administración de Active Directory desde PowerShell, y casi siempre tiene la misma causa: el módulo ActiveDirectory no está instalado o no está cargado en el equipo o en la sesión desde donde ejecutas el comando. En esta guía verás cómo comprobarlo, cómo instalarlo en cada tipo de sistema y qué otras causas menos evidentes pueden provocar el mismo mensaje.

Por qué ocurre: Get-ADUser no es un comando integrado

PowerShell incluye de serie los cmdlets del sistema (Get-Process, Get-Service…), pero los de Active Directory pertenecen a un módulo aparte, ActiveDirectory, que forma parte de las herramientas de administración remota del servidor (RSAT). Ese módulo está instalado por defecto en los controladores de dominio, pero no en un Windows 10, Windows 11 o servidor miembro normal. Si el módulo no existe, PowerShell no sabe qué es Get-ADUser y lo trata como un comando inexistente.

Paso 1: comprueba si el módulo está disponible

Get-Module -ListAvailable ActiveDirectory

# ¿Está ya cargado en la sesión actual?
Get-Module ActiveDirectory

# ¿Cuántos comandos aporta?
(Get-Command -Module ActiveDirectory).Count

Si el primer comando no devuelve nada, el módulo no está instalado en este equipo y debes instalarlo (paso 2). Si lo devuelve pero el segundo no, está instalado pero no cargado: pasa al paso 3.

Paso 2: instala el módulo según tu sistema

Windows 10 y Windows 11 (Pro, Enterprise, Education)

Abre PowerShell como administrador y ejecuta:

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

También puedes hacerlo desde Configuración → Aplicaciones → Características opcionales → Ver características, buscando «RSAT: herramientas de Servicios de dominio de Active Directory». La instalación incluye la consola gráfica y el módulo. Si falla con el error 0x800f0954, casi siempre es porque tu equipo usa un servidor WSUS: hay que permitir por directiva de grupo que las características opcionales se descarguen directamente de Windows Update (Especificar la configuración para la instalación de componentes opcionales y la reparación de componentes). En las ediciones Home no se puede instalar RSAT. Cuando ya lo tengas funcionando, tienes la guía para crear usuarios y grupos en Active Directory.

Windows Server

Install-WindowsFeature -Name RSAT-AD-PowerShell

Funciona también en Windows Server Core. No necesitas reiniciar.

Controlador de dominio

El módulo se instala con el rol de Servicios de dominio de Active Directory. Si falta, instala la característica RSAT-AD-PowerShell con el comando anterior.

Paso 3: carga el módulo

En Windows PowerShell 5.1, PowerShell carga automáticamente los módulos disponibles cuando usas uno de sus comandos, así que normalmente no hace falta nada más. Si quieres forzarlo, o si el comando sigue sin reconocerse:

Import-Module ActiveDirectory
Get-ADUser -Filter * -ResultSetSize 1

Si Import-Module falla, el mensaje indica el motivo (módulo no encontrado, problema de versión, falta de permisos).

Otras causas del mismo error

Estás usando PowerShell 7

El módulo ActiveDirectory fue diseñado para Windows PowerShell 5.1. En PowerShell 7 en Windows, normalmente funciona mediante una capa de compatibilidad que lo carga en una sesión de Windows PowerShell en segundo plano. Si en PowerShell 7 no se reconoce, prueba a cargarlo así:

Import-Module ActiveDirectory -UseWindowsPowerShell

Si da problemas, ejecuta tus comandos de Active Directory en la ventana de Windows PowerShell (powershell.exe), que es la que mejor lo soporta. En Linux y macOS, el módulo no existe: para consultar Active Directory desde allí necesitarás otras herramientas (LDAP, por ejemplo).

Ejecutas un script de 32 bits

Este es un clásico en tareas programadas, herramientas de despliegue y consolas lanzadas desde aplicaciones antiguas: las herramientas RSAT de Active Directory solo están disponibles en 64 bits. Si el script se ejecuta con la versión de 32 bits de PowerShell (C:\Windows\SysWOW64\WindowsPowerShell\v1.0\powershell.exe), el módulo no se encuentra aunque esté instalado. Comprueba el tipo de proceso con [Environment]::Is64BitProcess y lanza el script con la ruta de 64 bits (C:\Windows\System32\WindowsPowerShell\v1.0\powershell.exe).

Estás en un equipo distinto al que crees

Otra confusión habitual: el módulo está instalado en tu servidor de administración, pero ejecutas el script desde un equipo de usuario, o desde una sesión remota cuyo entorno no lo tiene. Comprueba el nombre del equipo con $env:COMPUTERNAME y repite el paso 1 allí. Para usar los cmdlets sin instalar nada en tu equipo, puedes ejecutarlos en un servidor que sí tenga el módulo, por ejemplo con Invoke-Command, o importar la sesión remota con Import-PSSession.

Un error al escribir el nombre

Parece trivial, pero ocurre. PowerShell no distingue mayúsculas, así que get-aduser y Get-ADUser son equivalentes, pero variantes como GetADUser (sin guion), Get-ADUsers (con una «s» de más) o Get-AD User (con un espacio) no se reconocen. Usa el tabulador para autocompletar y evitarlo.

Cuando el comando ya se reconoce, pero falla

Es habitual que, tras resolver este error, aparezca otro distinto: el módulo se carga, pero el comando no puede conectar con un controlador de dominio. El más típico es «Unable to find a default server with Active Directory Web Services running». Eso ya no es un problema de instalación sino de conexión, y se resuelve comprobando el servicio de Servicios web de Active Directory (puerto TCP 9389) y la resolución DNS, o indicando el servidor de forma explícita:

Get-ADUser -Identity l.gomez -Server dc01.empresa.local

# Desde un equipo fuera del dominio, con credenciales
Get-ADUser -Identity l.gomez -Server dc01.empresa.local -Credential (Get-Credential)

Cómo usar Get-ADUser: los ejemplos que más se necesitan

Ahora que el comando funciona, estos son los usos más habituales:

# Un usuario concreto, con todas sus propiedades
Get-ADUser -Identity l.gomez -Properties *

# Usuarios de un departamento, con las propiedades que necesitas
Get-ADUser -Filter "Department -eq 'Contabilidad'" -Properties Department, Title, EmailAddress |
    Select-Object Name, Title, EmailAddress

# Cuentas deshabilitadas en una unidad organizativa
Get-ADUser -Filter 'Enabled -eq $false' -SearchBase 'OU=Usuarios,DC=empresa,DC=local' | Select-Object Name, SamAccountName

# Usuarios que no han iniciado sesión en 90 días
$limite = (Get-Date).AddDays(-90)
Get-ADUser -Filter * -Properties LastLogonDate |
    Where-Object { $_.LastLogonDate -lt $limite } | Select-Object Name, LastLogonDate

# Con un filtro LDAP
Get-ADUser -LDAPFilter '(&(objectClass=user)(mail=*@empresa.com))' -Properties mail | Select-Object Name, mail

Cosas que conviene saber

  • Propiedades por defecto: Get-ADUser solo devuelve un conjunto reducido de propiedades (nombre, SamAccountName, estado, DN…). Para cualquier otra, como EmailAddress, Title o LastLogonDate, indícala con -Properties. Usar -Properties * en consultas masivas es lento: pide solo lo que necesitas.
  • Filtros: el parámetro -Filter usa su propia sintaxis, parecida a la de PowerShell, pero no admite expresiones complejas. Si usas una variable, mejor enciérrala entre comillas dentro de una cadena: -Filter "SamAccountName -eq '$usuario'". No se pueden usar propiedades de objetos como $obj.Nombre directamente en el filtro.
  • Rendimiento: filtra siempre en el servidor con -Filter o -SearchBase en lugar de traer todos los usuarios y filtrar después con Where-Object.
  • Resultados vacíos: si no devuelve nada y no hay error, el filtro no ha encontrado coincidencias o la búsqueda se ha limitado a una unidad organizativa donde no está el usuario.

Para recorrer el resultado y hacer algo con cada usuario (por ejemplo, desactivar los inactivos), usa los bucles que explicamos en la guía de bucles en PowerShell, y haz siempre primero una prueba con -WhatIf. Y si quieres repasar los comandos de administración más útiles, tienes los 10 comandos de PowerShell imprescindibles.

Seguridad: dónde instalar el módulo

Instala las herramientas RSAT únicamente en los equipos de administración, y usa para ello una cuenta con los permisos mínimos que necesites, distinta de la que usas para el trabajo diario. Si administras servidores por Escritorio remoto, no olvides protegerlo: lee nuestra guía para proteger el Escritorio Remoto (RDP) en Windows Server.

Preguntas frecuentes

¿Necesito estar en el dominio para usar Get-ADUser?

No necesariamente. Puedes ejecutarlo desde un equipo fuera del dominio siempre que el módulo esté instalado, el equipo resuelva el dominio por DNS y uses -Server y -Credential.

¿Funciona con Microsoft Entra ID (Azure AD)?

No. Get-ADUser consulta Active Directory local. Para los usuarios de Entra ID se usan los módulos de Microsoft Graph, como Get-MgUser.

¿Por qué el mismo comando funciona en un servidor y no en mi equipo?

Porque en el servidor el módulo está instalado (sobre todo si es un controlador de dominio) y en tu equipo no. Instala RSAT y vuelve a probar.

Comprobación de 30 segundos

  1. Abre Windows PowerShell (64 bits) como administrador.
  2. Ejecuta Get-Module -ListAvailable ActiveDirectory: si no devuelve nada, instala RSAT.
  3. Ejecuta Import-Module ActiveDirectory y después Get-ADDomain: si responde, el módulo y la conexión funcionan.
  4. Si Get-ADDomain falla pero el módulo se carga, el problema es de conexión: indica -Server o revisa el DNS.

Conclusión

Si PowerShell dice que Get-ADUser no se reconoce, comprueba primero con Get-Module -ListAvailable ActiveDirectory si el módulo está instalado. Si falta, instálalo con Add-WindowsCapability (Windows 10 y 11) o Install-WindowsFeature RSAT-AD-PowerShell (servidores). Si está instalado y aun así falla, revisa si usas PowerShell de 32 bits, PowerShell 7 sin compatibilidad o un equipo distinto del que crees. Y cuando el comando ya funcione, pide solo las propiedades que necesites y filtra siempre en el servidor.

Guías relacionadas

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *