Active Directory: cómo crear usuarios y grupos paso a paso

Crear usuarios en Active Directory es la tarea más básica de cualquier administrador de dominio, y aun así se hace mal en muchísimas empresas: sin convención de nombres, con permisos concedidos directamente a usuarios y con cuentas huérfanas acumulándose durante años. Esta guía explica cómo crear usuarios y grupos desde la consola gráfica y desde PowerShell, cómo organizarlos para que no se conviertan en un caos y qué rutinas de mantenimiento evitan los problemas de seguridad más habituales. Vamos a hacerlo bien desde el principio.
Requisitos previos
En un controlador de dominio ya tienes todas las herramientas. Desde un servidor miembro o un equipo de administración necesitas las herramientas de administración remota (RSAT):
# En Windows Server
Install-WindowsFeature RSAT-AD-PowerShell, RSAT-ADDS-Tools
# En Windows 10/11
Add-WindowsCapability -Online -Name 'Rsat.ActiveDirectory.DS-LDS.Tools~~~~0.0.1.0'
# Comprobar que el módulo está disponible
Import-Module ActiveDirectory
Get-Command -Module ActiveDirectory | Measure-Object
Para crear objetos necesitas pertenecer a un grupo con permisos delegados sobre la unidad organizativa donde los vas a crear (por ejemplo, Operadores de cuentas o un grupo propio con delegación). No uses la cuenta de administrador del dominio para el trabajo diario.
Antes de crear nada: la convención de nombres
Decide un formato y no lo cambies jamás. Un esquema habitual es inicial.apellido para el inicio de sesión (l.gomez), añadiendo un número o una segunda letra cuando haya colisiones. Tres detalles técnicos que conviene recordar:
- El nombre de inicio de sesión anterior a Windows 2000 (
sAMAccountName) admite como máximo 20 caracteres. - Evita tildes, eñes y espacios en los nombres de inicio de sesión: dan problemas con aplicaciones antiguas y con sistemas que no son Windows.
- El nombre principal de usuario (UPN,
l.gomez@empresa.local) es el que se usa en servicios como Microsoft 365; si tu dominio interno es.local, añade un sufijo UPN con el dominio público de la empresa para evitar problemas de sincronización.
Haz lo mismo con los grupos, con un prefijo por tipo: GRP-Contabilidad, GRP-VPN, ACL-Impresora-Planta2-Modificar. Dentro de dos años, cuando haya 400 objetos, lo agradecerás.
Diseña las unidades organizativas (OU)
Nunca dejes usuarios en el contenedor Users por defecto: no es una unidad organizativa y no puedes aplicarle directivas de grupo (GPO). Crea una estructura simple y estable, por ejemplo:
- Usuarios (con subunidades por departamento o por sede).
- Equipos (portátiles, sobremesas, servidores por separado).
- Grupos (de seguridad y de distribución).
- Cuentas de servicio y Deshabilitados (donde mover las bajas).
Marca las unidades con la opción Proteger el objeto contra eliminación accidental (se ve en la pestaña Objeto, con la vista avanzada activada en ADUC). Un error con el ratón no debería poder borrar una unidad con cientos de usuarios.
Crear un usuario con la consola (ADUC)
- Abre Usuarios y equipos de Active Directory (
dsa.msc). - Navega a la unidad organizativa correcta.
- Clic derecho → Nuevo → Usuario, y rellena nombre, apellidos y nombre de inicio de sesión.
- Establece una contraseña inicial que cumpla la directiva del dominio y marca El usuario debe cambiar la contraseña en el siguiente inicio de sesión.
- Después, abre sus propiedades y completa departamento, cargo, teléfono y correo, que son útiles para las libretas de direcciones y las firmas de correo.
Evita la casilla La contraseña nunca caduca salvo en cuentas de servicio justificadas, y para empleados temporales fija una fecha de expiración de la cuenta en la pestaña Cuenta.
Crear usuarios con PowerShell (la forma escalable)
New-ADUser -Name 'Laura Gómez' -GivenName 'Laura' -Surname 'Gómez' -DisplayName 'Laura Gómez' `
-SamAccountName 'l.gomez' -UserPrincipalName 'l.gomez@empresa.local' `
-Path 'OU=Contabilidad,OU=Usuarios,DC=empresa,DC=local' `
-Department 'Contabilidad' -Title 'Administrativa' -EmailAddress 'l.gomez@empresa.com' `
-AccountPassword (Read-Host -AsSecureString 'Contraseña inicial') `
-ChangePasswordAtLogon $true -Enabled $true
Si el comando falla con un mensaje sobre la contraseña, casi siempre es que no cumple la longitud o complejidad que exige la directiva de contraseñas del dominio. Si la cuenta ya existe, verás un error de «la cuenta especificada ya existe»: comprueba el nombre con Get-ADUser -Filter "SamAccountName -eq 'l.gomez'".
Altas masivas desde un CSV
¿Diez usuarios nuevos? Prepara un archivo nuevos.csv con las columnas Nombre;Apellido;Departamento y deja que un bucle haga el resto:
$clave = Read-Host 'Contraseña inicial' -AsSecureString
Import-Csv .\nuevos.csv -Delimiter ';' | ForEach-Object {
$sam = ('{0}.{1}' -f $_.Nombre.Substring(0,1), $_.Apellido).ToLower()
if (Get-ADUser -Filter "SamAccountName -eq '$sam'") { Write-Warning "Ya existe $sam"; return }
$datos = @{
Name = "$($_.Nombre) $($_.Apellido)"
GivenName = $_.Nombre
Surname = $_.Apellido
SamAccountName = $sam
UserPrincipalName = "$sam@empresa.local"
Path = "OU=$($_.Departamento),OU=Usuarios,DC=empresa,DC=local"
AccountPassword = $clave
ChangePasswordAtLogon = $true
Enabled = $true
}
New-ADUser @datos -WhatIf # quita -WhatIf cuando la simulación sea correcta
}
Fíjate en -WhatIf: simula las altas sin crearlas, así compruebas los nombres antes de tocar el directorio. Quita ese parámetro cuando todo sea correcto. Normaliza antes los nombres con tildes en el CSV, o añade una función que las elimine. Si necesitas repasar el funcionamiento de ForEach-Object y los bucles, tienes ejemplos en nuestra guía de bucles en PowerShell.
Grupos: la regla que evita el caos de permisos
Nunca asignes permisos de carpetas o recursos directamente a usuarios. La práctica correcta, conocida como AGDLP, se resume así: las cuentas (A) se agrupan en grupos globales (G) por departamento o función; estos se anidan en grupos locales de dominio (DL) asociados a un recurso concreto; y los permisos (P) se conceden a esos grupos locales de dominio. Cuando alguien cambia de puesto, solo se modifica su pertenencia a grupos y no hace falta tocar ningún permiso.
Recuerda también la diferencia entre tipos: los grupos de seguridad sirven para conceder permisos (y también pueden usarse para correo), mientras que los de distribución solo sirven para listas de correo.
# Grupo por departamento
New-ADGroup -Name 'GRP-Contabilidad' -GroupScope Global -GroupCategory Security -Path 'OU=Grupos,DC=empresa,DC=local'
# Grupo local de dominio para un recurso
New-ADGroup -Name 'ACL-Facturas-Modificar' -GroupScope DomainLocal -GroupCategory Security -Path 'OU=Grupos,DC=empresa,DC=local'
# Anidar: el grupo del departamento recibe el permiso del recurso
Add-ADGroupMember -Identity 'ACL-Facturas-Modificar' -Members 'GRP-Contabilidad'
# Añadir un usuario al grupo del departamento
Add-ADGroupMember -Identity 'GRP-Contabilidad' -Members 'l.gomez'
# Ver miembros (incluyendo los de grupos anidados)
Get-ADGroupMember -Identity 'ACL-Facturas-Modificar' -Recursive | Select-Object Name, SamAccountName
# ¿A qué grupos pertenece un usuario?
Get-ADPrincipalGroupMembership -Identity 'l.gomez' | Select-Object Name
Copiar los grupos de un compañero (usuario plantilla)
Get-ADUser 'plantilla.contabilidad' -Properties MemberOf | Select-Object -ExpandProperty MemberOf |
ForEach-Object { Add-ADGroupMember -Identity $_ -Members 'l.gomez' }
Una cuenta plantilla deshabilitada con los grupos típicos de cada puesto acelera mucho las altas y garantiza que todos los nuevos empleados reciben exactamente los mismos accesos.
Contraseñas y bloqueos: las tareas del día a día
Unlock-ADAccount -Identity 'l.gomez' # desbloquear
Set-ADAccountPassword -Identity 'l.gomez' -Reset -NewPassword (Read-Host -AsSecureString 'Nueva')
Set-ADUser -Identity 'l.gomez' -ChangePasswordAtLogon $true
Get-ADUser 'l.gomez' -Properties LockedOut, PasswordLastSet, LastLogonDate | Select-Object Name, LockedOut, PasswordLastSet, LastLogonDate
Higiene de cuentas: lo que se olvida siempre
- Cuando alguien deja la empresa: deshabilita la cuenta el mismo día (
Disable-ADAccount), muévela a la unidad «Deshabilitados» y anota en la descripción la fecha y la referencia de la baja. No la borres aún; puede haber datos ligados a ella. - Pasado el periodo de retención (por ejemplo, 90 días), elimina la cuenta y sus pertenencias a grupos.
- Revisa trimestralmente las cuentas sin uso:
Search-ADAccount -AccountInactive -TimeSpan 90.00:00:00 -UsersOnly. Ten en cuenta que el atributo de último inicio de sesión replicado se actualiza con un margen de unos 14 días, así que no uses plazos inferiores a eso. - Nada de cuentas compartidas tipo «recepcion»: son imposibles de auditar. Cada persona, su cuenta.
- Revisa quién pertenece a los grupos privilegiados:
Get-ADGroupMember 'Domain Admins'debería devolver muy pocas cuentas, y nunca las de uso diario. Quien administre servidores debería tener una cuenta distinta para ello, como recomendamos en la guía para proteger el Escritorio Remoto (RDP) en Windows Server.
Activa la Papelera de reciclaje de Active Directory
Borrar un usuario o un grupo por error puede ser una pesadilla, porque se pierden sus identificadores de seguridad y los permisos asociados. La papelera de reciclaje de AD permite restaurar objetos eliminados con todos sus atributos:
Enable-ADOptionalFeature 'Recycle Bin Feature' -Scope ForestOrConfigurationSet -Target 'empresa.local'
# Para recuperar un objeto borrado
Get-ADObject -Filter 'isDeleted -eq $true -and Name -like "Laura*"' -IncludeDeletedObjects | Restore-ADObject
Ten presente que activarla es una acción irreversible a nivel de bosque y que requiere un nivel funcional mínimo de Windows Server 2008 R2. Activarla en un entorno de pruebas primero es siempre una buena idea.
Automatizar las comprobaciones periódicas
Los informes de cuentas inactivas, bloqueadas o caducadas se pueden generar automáticamente cada semana. Si quieres aprender a programarlos, sigue la guía de tareas programadas con PowerShell, y para tener a mano los cmdlets más útiles, repasa los comandos de PowerShell imprescindibles.
Preguntas frecuentes
¿Qué diferencia hay entre deshabilitar y eliminar una cuenta?
Deshabilitar impide el inicio de sesión pero conserva el objeto, sus pertenencias a grupos y su identificador de seguridad, de modo que es reversible. Eliminar lo borra (o lo envía a la papelera si está activada). Deshabilita primero y elimina cuando haya pasado un plazo prudencial.
¿Puedo usar ADUC o es mejor el Centro de administración de Active Directory?
Ambos hacen lo mismo en lo esencial. ADUC es más ligero y conocido; el Centro de administración añade la gestión de la papelera de reciclaje y las directivas de contraseñas específicas. Para automatizar, PowerShell es siempre la mejor opción.
¿Qué pasa con los datos del usuario cuando se va?
Antes de eliminar la cuenta, guarda su carpeta personal y el contenido de su buzón según la política de retención de tu empresa. Esos datos no se borran al deshabilitar la cuenta, pero sí pueden perderse si se elimina sin haber hecho la copia.
Conclusión
Un directorio limpio se construye con tres hábitos: convención de nombres fija, permisos solo a través de grupos y bajas deshabilitadas a tiempo. Añade una estructura de unidades organizativas razonable, la papelera de reciclaje activada y revisiones trimestrales, y todo lo demás (scripts, auditorías, migraciones) se vuelve fácil cuando la base está ordenada.