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.
