# Cómo obtener todos los usuarios activos en Active Directory usando PowerShell Saber identificar las cuentas de usuario activas es crucial para las auditorías de seguridad, la gestión de licencias y para garantizar un funcionamiento sin inconvenientes. Aunque la mayoría de los administradores utilizan PowerShell para lograrlo, puede llevar mucho tiempo y ser complejo. Por otro lado, ADManager Plus, una [herramienta de generación de informes de Active Directory (AD)](https://www.manageengine.com/latam/ad-manager/herramienta-de-informes-de-windows-active-directory.html?utm_source=admp&utm_medium=windows-powershell&utm_content=get-all-active-ad-users), permite a los administradores obtener un informe de todos los usuarios activos de AD con solo unos clics. ## Obtener todos los usuarios activos en AD La siguiente tabla enumera los pasos para obtener todos los usuarios activos de AD mediante PowerShell y ADManager Plus: ### Windows PowerShell **Requisito previo** Garantice que el módulo de AD está instalado. Si no es así, descargue el paquete RSAT correcto para su sistema operativo y ejecute el siguiente comando para activar el módulo. ```powershell Import-Module ActiveDirectory ``` **Uso de Get-ADUser para filtrar usuarios activos** Ejecute el siguiente script para obtener los usuarios activos de AD. Esto utiliza el cmdlet Get-ADUser con un filtro para encontrar solo las cuentas en las que la propiedad *Habilitado (Enabled)* tiene el valor *$True*. ```powershell Get-ADUser -Filter {Enabled -eq $True} -Properties DisplayName, EmailAddress ``` ### ADManager Plus 1. Inicie sesión en ADManager Plus y vaya a **Informes > Informes de usuario**. 2. En *Informes de inicio de sesión*, haga clic en **Usuarios habilitados**. 3. Seleccione el dominio o dominios deseados y haga clic en **Generar**. ![ADManager Plus interface displaying all AD user accounts that are active with options to export, schedule, and manage users.](https://www.manageengine.com/products/ad-manager/powershell/images/get-inactive-ad-users-using-admanager-plus.png) ## Ejemplos de casos de uso y scripts PowerShell para obtener usuarios activos ### Ejemplo 1: Obtener todos los usuarios activos de AD ```powershell Get-ADUser -Filter 'Enabled -eq $True' ``` ### Ejemplo 2: Obtener los usuarios activos de AD con la última fecha de inicio de sesión ```powershell Get-ADUser -Filter {Enabled -eq $true} -Properties DisplayName, LastLogonDate | Select-Object Name, DisplayName, LastLogonDate | Sort-Object LastLogonDate -Descending ``` ### Ejemplo 3: Obtener todos los usuarios activos de AD en una OU específica ```powershell Get-ADUser -Filter {Enabled -eq $True} -SearchBase "OU=Sales,DC=domain,DC=com" -Properties DisplayName, EmailAddress | Select-Object Name, DisplayName, EmailAddress ``` ### Ejemplo 4: Exportar los usuarios activos de AD a CSV ```powershell Get-ADUser -Filter {Enabled -eq $True} -Properties SamAccountName, EmailAddress | Select-Object SamAccountName, EmailAddress | Export-Csv -Path "EnabledUsers.csv" -NoTypeInformation ``` ## Parámetros compatibles Los siguientes son parámetros esenciales que se pueden utilizar para enumerar usuarios activos de AD: | Columna | Descripción | |---|---| | -Filter | Especifica un hilo de filtro en formato de expresión PowerShell para limitar qué objetos de usuario se devuelven. | | -Properties | Especifica las propiedades adicionales de AD que se recuperarán además del conjunto predeterminado, como DisplayName y *EmailAddress*. | | -Identity | Comprueba un usuario específico por nombre de usuario o *SamAccountName*. | | -Export-Csv | Se utiliza para exportar el informe a un archivo CSV (no es un parámetro del cmdlet, pero se utiliza en la canalización). | | -Path | Ruta del archivo de salida para el informe exportado. | ## Consejos para solucionar problemas Incluso con los comandos adecuados, obtener datos de los usuarios activos mediante PowerShell puede dar lugar ocasionalmente a errores o resultados incompletos. He aquí algunos problemas comunes y cómo resolverlos: ### 1. Get-ADUser: No se reconoce el término **Causa:** El módulo de AD no está instalado o importado. **Solución:** Garantice que está ejecutando PowerShell en un sistema que tiene RSAT: herramientas de AD instaladas. Importe el módulo manualmente ejecutando el siguiente comando: ```powershell Import-Module ActiveDirectory ``` ### 2. Falta LastLogonDate u otras propiedades **Causa:** Algunas propiedades como *LastLogonDate* no están incluidas de forma predeterminada. **Solución:** Siempre especifique las propiedades requeridas explícitamente usando el parámetro *-Properties* como se indica a continuación: ```powershell Get-ADUser -Filter {Enabled -eq $true} -Properties LastLogonDate ``` ### 3. Permiso denegado o acceso denegado **Causa:** Su sesión de PowerShell no tiene los permisos adecuados. **Solución:** Ejecute PowerShell como administrador. ### 4. Resultados vacíos devueltos **Causa:** Filtro con errores de configuración u OU incorrecta especificada. **Solución:** - Compruebe la sintaxis del filtro. - Garantice que la ruta de la OU es correcta. - Compruebe que hay usuarios activos en la OU especificada. ## Limitaciones del uso de scripts PowerShell para obtener usuarios activos Aunque es potente, depender únicamente de PowerShell para la elaboración de informes exhaustivos sobre los usuarios puede plantear retos: - **Complejidad para los no expertos en scripts:** La creación y depuración de scripts complejos puede llevar mucho tiempo a los administradores menos familiarizados con PowerShell. - **Falta de informes centralizados:** La generación de informes PowerShell completos para varios atributos de AD a menudo requiere la combinación de múltiples scripts y la consolidación manual de datos. - **Gestión de errores:** Cada script debe incorporar explícitamente una gestión de errores robusta. ## Ventajas de elegir ADManager Plus en lugar de PowerShell ADManager Plus tiende un puente entre los potentes informes de AD y la facilidad de uso. He aquí por qué es la mejor opción para muchos equipos de TI: - **No se requieren scripts:** Genere fácilmente informes sobre usuarios activos, [usuarios inactivos](https://www.manageengine.com/latam/ad-manager/informes-usuarios-equipos-inactivos-active-directory.html?utm_source=admp&utm_medium=windows-powershell&utm_content=get-all-active-ad-users), usuarios bloqueados y mucho más en unos pocos clics sin necesidad de scripts. - **Informes predefinidos:** Acceda a [más de 200 informes out-of-the-box](https://www.manageengine.com/latam/ad-manager/herramienta-de-informes-de-windows-active-directory.html?utm_source=admp&utm_medium=windows-powershell&utm_content=get-all-active-ad-users) que le ahorrarán mucho tiempo. - **Informes personalizables:** Cree informes hechos a la medida con atributos y filtros específicos para satisfacer sus necesidades exclusivas de auditoría y cumplimiento. - **Programación automática de informes:** [Programe informes](https://www.manageengine.com/latam/ad-manager/programacion-de-informes-active-directory.html?utm_source=admp&utm_medium=windows-powershell&utm_content=get-all-active-ad-users) para que se generen y envíen automáticamente a su bandeja de entrada, garantizando que siempre disponga de información actualizada. - **Informes delegados:** Delegue de forma segura [las tareas de generación de informes de AD](https://www.manageengine.com/latam/ad-manager/delegacion-mesa-de-ayuda-windows-active-directory-office-365.html?utm_source=admp&utm_medium=windows-powershell&utm_content=get-all-active-ad-users) a los técnicos de la mesa de ayuda sin exponerlos a datos confidenciales ni a complejos scripts de PowerShell. ## PREGUNTAS FRECUENTES ### 1. ¿Cómo puedo encontrar a los usuarios que han iniciado sesión en los últimos 90 días? Para encontrar usuarios que hayan iniciado sesión en los últimos 90 días, puede utilizar el cmdlet *Get-ADUser* en PowerShell y filtrar en función del atributo *lastLogonTimestamp*: ```powershell $NinetyDaysAgo = (Get-Date).AddDays(-90) Get-ADUser -Filter {lastLogonTimestamp -ge $NinetyDaysAgo.ToFileTime()} -Properties Name, lastLogonTimestamp | Select-Object Name, @{Name="LastLogon"; Expression={[datetime]::FromFileTime($_.lastLogonTimestamp)}} ``` Alternativamente, puede utilizar ADManager Plus para generar rápidamente [informes de inicio de sesión de AD](https://www.manageengine.com/latam/ad-manager/informes-inicio-de-sesion-de-usuario-de-active-directory.html?utm_source=admp&utm_medium=windows-powershell&utm_content=get-all-active-ad-users) que muestren los usuarios que han iniciado sesión dentro del periodo de tiempo especificado.