# Scripts PowerShell de Active Directory para generar informes de usuarios La gestión de Active Directory (AD) es una de las principales responsabilidades de los administradores de TI, y un aspecto crucial de ese rol implica el control de la actividad de los usuarios, la auditoría de los cambios y la elaboración de informes precisos y en tiempo real con fines de cumplimiento. Para muchos equipos de TI, PowerShell sigue siendo la herramienta preferida tanto para la gestión de AD como para la elaboración de informes. Desde el control de los inicios de sesión de los usuarios y la supervisión de la pertenencia a grupos hasta el análisis de la actividad de los usuarios de Microsoft 365, PowerShell ofrece la flexibilidad y la precisión necesarias para mantener un entorno de AD seguro, conforme a las normativas y bien gestionado. Aunque PowerShell ofrece potentes funciones para estas tareas, también presenta varios retos. La creación y el mantenimiento de scripts complejos puede llevar mucho tiempo y exigir conocimientos avanzados de scripts. Además, PowerShell carece de funciones centralizadas de generación de informes, lo que aumenta el riesgo de error humano y las posibles brechas de seguridad. [ADManager Plus](https://www.manageengine.com/latam/ad-manager/?utm_source=admp&utm_medium=windows-powershell&utm_content=windows-powershell-scripts-for-user-reports), una [solución de informes de 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=windows-powershell-scripts-for-user-reports), ofrece [informes de usuarios de AD](https://www.manageengine.com/latam/ad-manager/informes-de-usuarios-de-active-directory.html?utm_source=admp&utm_medium=windows-powershell&utm_content=windows-powershell-scripts-for-user-reports) predefinidos que proporcionan una visibilidad completa de los usuarios de AD con solo unos clics, eliminando la necesidad de complejos scripts. ## Comandos esenciales de PowerShell para informes de usuarios de AD Comprender los principales cmdlets de PowerShell es el primer paso para dominar los informes de AD. He aquí algunos comandos fundamentales que utilizará con frecuencia: - [Get-ADUser](https://www.manageengine.com/latam/ad-manager/powershell/obtener-todos-los-usuarios-active-directory.html): Este comando ayuda a recuperar información de usuario de AD. Puede utilizar varios atributos como SamAccountName, Enabled, LastLogonDate y otros como parámetros para filtrar los resultados. - [Get-ADGroupMember](https://www.manageengine.com/latam/ad-manager/powershell/informe-de-miembros-de-grupo-en-ad-mediante-powershell.html): Este comando permite identificar a qué grupos pertenece un usuario. - [Search-ADAccount](https://www.manageengine.com/latam/ad-manager/powershell/como-buscar-una-cuenta-ad-mediante-powershell.html): Este comando es excelente para encontrar cuentas en función de su estado, como cuentas bloqueadas, cuentas inactivas o cuentas con contraseñas caducadas ## Scripts PowerShell para informes comunes de usuarios de Active Directory He aquí una colección de scripts esenciales de AD PowerShell que pueden ayudarle a gestionar y elaborar informes sobre su entorno de usuarios de forma efectiva. ### 1. [Enumerar todos los usuarios de AD](https://www.manageengine.com/latam/ad-manager/powershell/obtener-todos-los-usuarios-active-directory.html) Este script básico es vital para la auditoría de línea de base, la limpieza de directorios o la migración de datos de usuario. Recupera una lista completa de todos los usuarios de AD junto con sus propiedades clave, y también exporta los usuarios de AD a un CSV para facilitar su análisis. ```powershell Get-ADUser -Filter * -Properties * | Select-Object Name, sAMAccountName, userPrincipalName, Enabled, department, title, LastLogonDate | Export-Csv -Path "C:\AllADUsers.csv" -NoTypeInformation ``` ### 2. [Obtener usuarios de AD activos](https://www.manageengine.com/latam/ad-manager/powershell/obtener-todos-los-usuarios-activos-e-inactivos-en-active-directory-mediante-powershell.html) Aunque encontrar usuarios deshabilitados es clave para la limpieza, obtener una lista de todas las cuentas activas y habilitadas es esencial para la gestión diaria, las auditorías de licencias y el establecimiento de la base de seguridad. Este script filtra todas las cuentas de usuario que están actualmente habilitadas y listas para su uso. ```powershell Get-ADUser -Filter 'Enabled -eq $true' -Properties DisplayName, sAMAccountName, LastLogonDate | Select-Object name, displayName, sAMAccountName, LastLogonDate | Export-Csv -Path "C:\Reports\EnabledUsers.csv" -NoTypeInformation ``` ### 3. Buscar usuarios inactivos de AD Identificar las cuentas inactivas es una medida de seguridad crítica para evitar accesos no autorizados y mantener un entorno de AD limpio. Este script ayuda a localizar a los usuarios que no han iniciado sesión durante un periodo determinado. ```powershell $InactiveDays = 90$InactiveDate = (Get-Date).AddDays(-$InactiveDays) Get-ADUser -Filter {LastLogonDate -lt $InactiveDate Enabled -eq $true} -Properties LastLogonDate | Select-Object Name, sAMAccountName, LastLogonDate ``` ### 4. [Obtener cuentas de AD desactivadas](https://www.manageengine.com/latam/ad-manager/powershell/exportar-usuarios-deshabilitados-de-active-directory-mediante-powershell.html) Las cuentas desactivadas, si no se gestionan adecuadamente, pueden suponer un riesgo para la seguridad o indicar la existencia de antiguos empleados que aún tienen una presencia persistente en el directorio. Este script le ayuda a obtener rápidamente todos los usuarios de AD deshabilitados, proporcionando su nombre, sAMAccountName, y su estado habilitado para una clara identificación. ```powershell Get-ADUser -Filter {Enabled -eq $false} -Properties Name, sAMAccountName, Enabled | Select-Object Name, sAMAccountName, Enabled ``` ### 5. [Buscar usuarios de AD con cuenta caducada](https://www.manageengine.com/products/ad-manager/powershell/export-ad-account-expired-users-using-powershell.html?utm_source=admp&utm_medium=windows-powershell&utm_content=windows-powershell-scripts-for-user-reports) Utilice este script para buscar cuentas de usuario temporales o por contrato que hayan superado su fecha de caducidad establecida. Esto es diferente de una cuenta deshabilitada y es útil para limpiar cuentas que ya no deberían tener acceso. ```powershell Search-ADAccount -AccountExpired | Select-Object Name, sAMAccountName, AccountExpirationDate | Export-Csv -Path "C:\Reports\ExpiredAccounts.csv" -NoTypeInformation ``` ### 6. [Obtener la fecha del último inicio de sesión de los usuarios de AD](https://www.manageengine.com/latam/ad-manager/powershell/enumerar-el-ultimo-inicio-de-sesion-de-usuarios-de-active-directory-mediante-powershell.html) El control de la última fecha de inicio de sesión de los usuarios de AD es una práctica esencial para la auditoría de seguridad, la identificación de cuentas inactivas y el mantenimiento de un directorio de usuarios limpio. Este script PowerShell del inicio de sesión de usuario de AD recupera la última marca de tiempo del inicio de sesión de todos los usuarios, proporcionando su nombre, sAMAccountName, y la última fecha de inicio de sesión. ```powershell Get-ADUser -Filter * -Properties LastLogonDate | Select-Object Name, sAMAccountName, LastLogonDate | Export-Csv -Path "C:\ADUserLogonReport.csv" -NoTypeInformation ``` ### 7. [Enumerar permisos de usuario de AD](https://www.manageengine.com/latam/ad-manager/powershell/informe-de-permisos-active-directory-mediante-powershell.html) Generar informes sobre los permisos de los usuarios de AD es esencial para auditar el acceso de los usuarios y garantizar una postura de seguridad de mínimos privilegios. Este script PowerShell de los permisos de usuario de AD recupera los permisos que un usuario tiene en una unidad organizativa (OU) específica. ```powershell $OUPath = "OU=Sales,DC=yourdomain,DC=com" Get-Acl -Path"AD:\$OUPath" | Select-Object-ExpandProperty Access | Select-Object IdentityReference, ActiveDirectoryRights, AccessControlType, ObjectType, InheritanceType, IsInherited | Export-Csv-Path"C:\Reports\OUPermissions.csv"- ``` ### 8. [Buscar cuentas de usuario con contraseñas configuradas para no caducar nunca](https://www.manageengine.com/latam/ad-manager/powershell/enumerar-cuentas-de-active-directory-que-nunca-caducan.html) Por razones de seguridad, muy pocas cuentas deberían tener sus contraseñas configuradas para no caducar nunca. Este script identifica todas las cuentas de usuario que tienen activado este indicador: ```powershell Get-ADUser -Filter * -Properties name, PasswordNeverExpires | Where-Object {$_.PasswordNeverExpires -eq $true} | Select-Object name, sAMAccountName, distinguishedName | Export-Csv -Path "C:\Reports\PwdNeverExpires.csv" -NoTypeInformation ``` A veces basta con encontrar rápidamente los datos de un único usuario sin tener que navegar por la interfaz Active Directory Users and Computers. Este script le permite encontrar un usuario específico por su sAMAccountName y recuperar todas sus propiedades: ```powershell $Username = "JohnDoe" Get-ADUser -Identity $Username -Properties * ``` ### 9. Obtener usuarios de AD con sus gestores Para el organigrama, las estructuras de informes o los flujos de trabajo de aprobación, a menudo se necesita una lista de usuarios y sus gestores directos. Este script recupera los usuarios e incluye el nombre de su gestor en el informe. ```powershell Get-ADUser -Filter * -Properties displayName, manager | Select-Object name, displayName, @{Name="Manager";Expression={(Get-ADUser $_.Manager).Name}} | Export-Csv -Path "C:\Reports\UsersWithManagers.csv" -NoTypeInformation ``` ### 10. Obtener el sAMAccountName de un usuario Si tiene el nombre completo de un usuario, pero necesita su sAMAccountName, este script proporciona una forma rápida de buscarlo. ```powershell $DisplayName = "John Doe" Get-ADUser - Filter "displayName -eq '$displayName'" | Select-Object name, sAMAccountName ``` ### 11. Obtener usuarios de múltiples OU En entornos de AD complejos, los usuarios pueden estar repartidos en varias OU. Este script demuestra cómo apuntar a múltiples OU y consolidar la lista de usuarios en un único informe. ```powershell Get-ADUser-Filter * -SearchBase$OU-Properties displayName | Select-Object name, displayName, distinguishedName } $AllUsers | Export-Csv-Path"C:\Reports\MultiOUUsers.csv"-NoTypeInformation ``` ### 12. [Usuarios de un departamento específico](https://www.manageengine.com/latam/ad-manager/powershell/powershell-obtener-usuarios-de-ad-filtrando-por-departmento.html) El filtrado de usuarios por departamento es un requisito habitual para crear listas de distribución o informes específicos de un departamento. Este script recupera todos los usuarios que tienen un valor específico en su atributo de departamento. ```powershell $Department = "Finance" Get-ADUser -Filter "department -eq '$department'" -Properties displayName, department | Select-Object name, displayName, sAMAccountName, department | Export-Csv -Path "C:\Reports\FinanceDepartmentUsers.csv" -NoTypeInformation ``` ### 13. Usuarios con atributos vacíos Para la integridad de los datos y la limpieza de AD, es útil encontrar usuarios a los que les falta información importante, como un número de teléfono o una dirección de correo electrónico. Este script encuentra todos los usuarios en los que el atributo TelephoneNumber no está establecido. Puede cambiar el atributo por el que necesite comprobar. ```powershell Get-ADUser-Filter * -Properties telephoneNumber | Where-Object {-not $_.TelephoneNumber} | Select-Object name, sAMAccountName, distinguishedName | Export-Csv-Path"C:\Reports\UsersWithEmptyPhone.csv"-NoTypeInformation ``` ### 14. Usuarios con un Common-Name específico Aunque name y displayName son los atributos de nombre más utilizados, a veces es necesario encontrar a un usuario basándose en su *Common-Name (CN)*, que forma parte de su nombre distinguido. Este script muestra cómo filtrar usuarios basándose en el CN. ```powershell $CN = "John Doe" Get-ADUser -Filter "cn -eq '$cn'" | Select-Object Name, sAMAccountName, distinguishedName ``` ## Retos del uso de scripts PowerShell para la generación de informes de usuarios de AD A pesar de su potencia, confiar únicamente en los scripts para AD de PowerShell para la elaboración de informes exhaustivos puede presentar varios retos: - **Consumo de tiempo:** Escribir, probar y mantener scripts complejos para diversos informes puede suponer una importante disminución de recursos. - **Complejidad:** Los informes avanzados suelen requerir conocimientos intrincados de scripting, especialmente para filtrar, unir datos y manejar grandes conjuntos de datos. - **Falta de centralización:** Las salidas de los scripts pueden estar dispersas, lo que dificulta la obtención de una visión unificada de su entorno de AD. - **Informes manuales:** Generar informes ad hoc con rapidez puede resultar complicado si no se dispone de scripts predefinidos. - **Propenso a errores:** Los scripts manuales aumentan el riesgo de error humano, lo que puede dar lugar a datos inexactos. - **Problemas de seguridad:** Conceder permisos a los usuarios que necesitan ejecutar scripts puede provocar brechas de seguridad. ## Simplifique la generación de informes sobre usuarios de AD con ADManager Plus ADManager Plus es una completa [herramienta de generación de informes de 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=windows-powershell-scripts-for-user-reports) diseñada para simplificar la gestión y generación de informes de AD, Exchange, Microsoft 365 y Google Workspace. Dispone de las siguientes funciones: - **Más de 200 informes predefinidos:** Acceda a una amplia biblioteca de más de 200 informes listos para usar sobre usuarios, grupos, equipos, GPO y mucho más, sin necesidad de scripts. - **Informes automatizados:** Programe la generación de [informes de AD](https://www.manageengine.com/latam/ad-manager/programacion-de-informes-active-directory.html?utm_source=admp&utm_medium=windows-powershell&utm_content=windows-powershell-scripts-for-user-reports) y envíelos automáticamente a su bandeja de entrada, para disponer siempre de información actualizada. - **Informes personalizados:** Utilice filtros para crear informes muy específicos adaptados a sus necesidades exactas. - **Informes exportables:** Exporte los informes de AD a varios formatos como CSV, PDF, HTML y XLSX para cumplir los requisitos de auditoría. - **Informes delegados:** Delegue las tareas de elaboración de informes en los técnicos de la mesa de ayuda sin concederles amplios permisos, lo que mejora la seguridad y reduce la carga de trabajo. - **Administración instantánea:** Identifique los problemas a partir de los informes y tome medidas correctivas inmediatas directamente en la misma consola, agilizando su flujo de trabajo. ## PREGUNTAS FRECUENTES ### 1. ¿Cómo puedo obtener una lista de todos los usuarios en AD con PowerShell? Puede utilizar el cmdlet Get-ADUser con el parámetro -Filter * para obtener todos los usuarios.