Automatiza la gestión de usuarios en Active Directory con PowerShell

Aprende a crear, modificar y deshabilitar cuentas de usuario en AD de forma masiva usando scripts PowerShell eficientes y reutilizables.

Si administras un entorno con decenas o cientos de usuarios, gestionar cuentas manualmente en Active Directory puede convertirse en una tarea tediosa y propensa a errores.

PowerShell, con el módulo de ActiveDirectory , te permite automatizar estas operaciones de forma segura y repetible.

¿Por qué automatizar con PowerShell?

Las tareas manuales en el Centro de administración de Active Directory (ADAC) o en los complementos MMC funcionan bien para operaciones puntuales, pero en entornos corporativos necesitas escalar. Incorporaciones masivas tras una fusión empresarial, cambios de estructura organizativa o bajas por lotes son escenarios donde un script bien escrito ahorra horas de trabajo y elimina errores humanos.

Crear usuarios en masa desde CSV

Uno de los casos más comunes es la creación de múltiples usuarios a partir de un fichero CSV. El siguiente script lee los datos del fichero y crea cada cuenta con los atributos necesarios:

<h1>Importar módulo AD Import-Module ActiveDirectory</h1>
$usuarios = Import-Csv -Path "C:\usuarios_nuevos.csv"
foreach ($u in $usuarios) {
New-ADUser <code>
-Name $u.NombreCompleto</code>
-SamAccountName $u.Usuario <code>
-UserPrincipalName "$($u.Usuario)@empresa.com"</code>
-Path "OU=Empleados,DC=empresa,DC=com" <code>
-AccountPassword (ConvertTo-SecureString $u.Contraseña -AsPlainText -Force)</code>
-Enabled $true
Write-Host "Usuario creado: $($u.NombreCompleto)" }

El fichero CSV debe contener las columnas NombreCompleto, Usuario, Contraseña.

Puedes ampliar los atributos fácilmente añadiendo parámetros como -Department, -Title o -Manager.

Deshabilitar cuentas inactivas

Otro escenario recurrente es identificar y deshabilitar cuentas que llevan más de 90 días sin acceder, cumpliendo así con buenas prácticas de seguridad:

Consejo: Usa siempre el parámetro -WhatIf en la primera ejecución. Te mostrará qué cuentas se verían afectadas sin realizar ningún cambio real.

$fechaLimite = (Get-Date).AddDays(-90)
Get-ADUser -Filter {LastLogonDate -lt $fechaLimite} `
-Properties LastLogonDate | Where-Object { $_.Enabled -eq $true } | Disable-ADAccount -WhatIf

Exportar un informe de usuarios por OU

Para auditorías o reportes periódicos, este fragmento genera un CSV con todos los usuarios de una OU concreta, incluyendo su estado y último acceso:

Get-ADUser -SearchBase "OU=Empleados,DC=empresa,DC=com" ` 
-Filter * -Properties LastLogonDate, Department, Enabled | `
Select-Object Name, SamAccountName, Department, Enabled, LastLogonDate | `
Export-Csv "C:\informes\usuarios_$(Get-Date -Format 'yyyyMMdd').csv" -NoTypeInformation

PowerShell es el aliado imprescindible de cualquier administrador de sistemas Windows. Con apenas unas pocas líneas puedes automatizar procesos que de forma manual llevarían horas, reducir errores y mantener un registro claro de las acciones realizadas. En próximos posts veremos cómo extender estos scripts para que funcionen también con usuarios sincronizados en Entra ID (Azure AD).

Requisito previo: Necesitas el módulo RSAT (Remote Server Administration Tools) instalado en tu equipo o ejecutar los scripts directamente en un Domain Controller.

Deja una respuesta

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