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, una solución de informes de AD, ofrece informes de usuarios de AD 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: 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: Este comando permite identificar a qué grupos pertenece un usuario.
  • Search-ADAccount: 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

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.

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

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.

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.

$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

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.

Get-ADUser -Filter {Enabled -eq $false} -Properties Name, sAMAccountName, Enabled | Select-Object Name, sAMAccountName, Enabled

5. Buscar usuarios de AD con cuenta caducada

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.

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

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.

Get-ADUser -Filter * -Properties LastLogonDate |
Select-Object Name, sAMAccountName, LastLogonDate |
Export-Csv -Path "C:\ADUserLogonReport.csv" -NoTypeInformation

7. Enumerar permisos de usuario de AD

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.

$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

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:

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:

$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.

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.

$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.

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

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.

$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.

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.

$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 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 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.

No más scripts, ¡genere informes de usuarios de AD al instante!

PREGUNTAS FRECUENTES

Puede utilizar el cmdlet Get-ADUser con el parámetro -Filter * para obtener todos los usuarios.

 
  • Scripts PowerShell de Active Directory para generar informes de usuarios
  • Scripts PowerShell para informes comunes de usuarios de Active Directory
  • Retos del uso de scripts PowerShell para la generación de informes de usuarios de AD
  • Simplifique la generación de informes sobre usuarios de AD con ADManager Plus

Para una gestión de activos fácil y efectiva en la que confían las siguientes empresas

La solución integral para la gestión y generación de informes de Active Directory