GuíasGuides · Nivel 2Level 2

Active Directory día a día: delegar permisos en una OU, la papelera de reciclaje y quién ha cambiado este usuarioActive Directory day to day: delegating permissions on an OU, the Recycle Bin and who changed this user

Delegar en una OU el restablecimiento de contraseñas, el desbloqueo y la creación de usuarios, equipos y grupos con el asistente y con dsacls, activar la papelera de reciclaje y restaurar con Restore-ADObject, encontrar quién borró o cambió un usuario con los eventos 4726, 4738, 4740 y 5136, y poner MachineAccountQuota a cero.Delegate password resets, unlocks and creating users, computers and groups on an OU with the wizard and with dsacls, enable the Recycle Bin and restore with Restore-ADObject, find who deleted or changed a user with events 4726, 4738, 4740 and 5136, and set MachineAccountQuota to zero.

Qué vas a conseguir

Que el service desk restablezca contraseñas y desbloquee cuentas de su OU sin ser administrador del dominio, que un usuario borrado por error vuelva con sus grupos en un minuto, y que cuando alguien pregunte "¿quién ha tocado esta cuenta?" tengas la respuesta en los registros de los controladores de dominio. Es el día a día de AD después del alta de usuarios.

Antes de empezar

  • Una estructura de OU por sede o por tipo de objeto (OU=Usuarios,OU=Madrid, OU=Equipos,OU=Madrid). Se delega sobre OU, no sobre usuarios sueltos.
  • Grupos de delegación creados: por ejemplo GG-AD-Helpdesk-Madrid para restablecer y desbloquear, GG-AD-Altas-Madrid para crear usuarios. Se delega a grupos, nunca a personas.
  • El módulo ActiveDirectory de PowerShell (RSAT) y una cuenta con permisos de administración sobre esas OU.
  • En Usuarios y equipos de Active Directory, Ver › Características avanzadas activado para ver la pestaña Seguridad.

1. Delegar con el asistente

Usuarios y equipos de Active Directory · Delegación de control
contoso.localMadridUsuariosclic derechoDelegar control…
Usuarios o gruposCONTOSO\GG-AD-Helpdesk-Madrid
Tareas comunes
Restablecer contraseñas de usuario y forzar el cambio de contraseña en el siguiente inicio de sesión
Crear, eliminar y administrar cuentas de usuario
Crear, eliminar y administrar grupos
Modificar la pertenencia a un grupo
Siguiente
Finalizar

El desbloqueo no está en las tareas comunes. Se añade con Crear una tarea personalizada para delegar › Solo los siguientes objetos de la carpeta › Objetos Usuario › Específicos de propiedad y se marcan Leer lockoutTime y Escribir lockoutTime.

Para que un grupo una equipos en la OU de equipos: tarea personalizada, Objetos Equipo, Crear los objetos seleccionados en esta carpeta (y Eliminar, si también da de baja), y después los permisos Restablecer contraseña, Escritura validada en el nombre de host DNS, Escritura validada en el nombre principal de servicio y Escribir restricciones de cuenta.

El asistente solo añade permisos; no sabe quitarlos. Para revisar o retirar una delegación, ve a Propiedades › Seguridad › Opciones avanzadas de la OU.

2. Lo mismo con dsacls y PowerShell

Para documentarlo en un cambio o repetirlo en otra sede, mejor por línea de comandos:

Símbolo del sistema (administrador) · delegaciones en OU=Usuarios,OU=Madrid
# Restablecer contraseña y forzar cambio en el siguiente inicio (solo objetos hijos de tipo usuario)dsacls "OU=Usuarios,OU=Madrid,DC=contoso,DC=local" /I:S /G "CONTOSO\GG-AD-Helpdesk-Madrid:CA;Reset Password;user"dsacls "OU=Usuarios,OU=Madrid,DC=contoso,DC=local" /I:S /G "CONTOSO\GG-AD-Helpdesk-Madrid:RPWP;pwdLastSet;user"# Desbloqueardsacls "OU=Usuarios,OU=Madrid,DC=contoso,DC=local" /I:S /G "CONTOSO\GG-AD-Helpdesk-Madrid:RPWP;lockoutTime;user"# Crear y borrar usuarios en la OU, y administrarlosdsacls "OU=Usuarios,OU=Madrid,DC=contoso,DC=local" /I:T /G "CONTOSO\GG-AD-Altas-Madrid:CCDC;user"dsacls "OU=Usuarios,OU=Madrid,DC=contoso,DC=local" /I:S /G "CONTOSO\GG-AD-Altas-Madrid:GA;;user"The command completed successfully

/I:T aplica al objeto y a sus hijos, /I:S solo a los hijos. CA es un derecho extendido (Reset Password), RPWP leer y escribir una propiedad, CCDC crear y borrar hijos del tipo indicado, GA control total. Para grupos se usa CCDC;group y, para cambiar miembros, RPWP;member;group.

Para comprobar después qué tiene delegado un grupo, (Get-Acl "AD:\OU=Usuarios,OU=Madrid,DC=contoso,DC=local").Access lista cada permiso con su IdentityReference y su ObjectType.

Si el service desk no puede restablecer la contraseña de un usuario concreto, mira su atributo adminCount. Las cuentas que pertenecen o han pertenecido a grupos protegidos (Admins. del dominio, Operadores de cuentas…) reciben los permisos de AdminSDHolder y no heredan la delegación de la OU. Es intencionado.

3. La papelera de reciclaje de AD

Sin papelera, un usuario borrado se restaura desde una copia con restauración autoritativa. Con ella, se recupera con todos sus atributos y grupos. Requiere nivel funcional de bosque Windows Server 2008 R2 o superior y, una vez activada, no se puede desactivar.

PowerShell (administrador de organización) · activar la papelera
Enable-ADOptionalFeature -Identity 'Recycle Bin Feature' -Scope ForestOrConfigurationSet -Target 'contoso.local'# Pide confirmación: la acción es irreversibleGet-ADOptionalFeature -Filter 'Name -like "Recycle*"' | Select-Object Name, EnabledScopes

También se activa desde el Centro de administración de Active Directory: clic derecho en el dominio › Habilitar papelera de reciclaje.

Restaurar un usuario borrado:

PowerShell · restaurar un usuario borrado
Get-ADObject -Filter 'sAMAccountName -eq "lprado"' -IncludeDeletedObjects -Properties lastKnownParent, whenChanged | Select-Object Name, lastKnownParent, whenChangedName                                           lastKnownParent                              whenChanged----                                           ---------------                              -----------Laura Prado DEL:5c1e9a0e-7a43-4f0b-9d2e-...    OU=Usuarios,OU=Madrid,DC=contoso,DC=local    30/10/2026 9:14:02Get-ADObject -Filter 'sAMAccountName -eq "lprado"' -IncludeDeletedObjects | Restore-ADObjectGet-ADUser lprado -Properties MemberOf | Select-Object Enabled, @{n='Grupos';e={$_.MemberOf.Count}}
  • El objeto vuelve a su lastKnownParent. Si esa OU también se borró, restaura primero la OU.
  • El plazo para recuperar es msDS-deletedObjectLifetime, que por defecto toma el valor de tombstoneLifetime (180 días en los bosques actuales).

4. ¿Quién ha borrado o cambiado este usuario?

Los controladores de dominio solo lo registran si la directiva de auditoría avanzada está activa. En la GPO de los controladores de dominio: Configuración del equipo › Directivas › Configuración de Windows › Configuración de seguridad › Configuración de directiva de auditoría avanzada › Directivas de auditoría:

  • Administración de cuentas › Auditar la administración de cuentas de usuario: Correcto y Error.
  • Acceso DS › Auditar cambios de servicio de directorio: Correcto. Además necesita una entrada de auditoría (SACL) en la OU o el dominio para "Todos" con escritura de propiedades y eliminación.

Los eventos que buscas en el registro de Seguridad:

EventoQué significa
4720Se creó una cuenta de usuario
4726Se eliminó una cuenta de usuario
4738Se cambió una cuenta de usuario (indica qué atributos, no los valores anteriores)
4740Se bloqueó una cuenta (lo registra el DC con el rol de emulador de PDC)
4767Se desbloqueó una cuenta
5136Se modificó un objeto del directorio, con el valor anterior y el nuevo

Cada evento se registra en el DC que hizo el cambio. Para no adivinar cuál, pregunta a todos:

PowerShell · quién borró a lprado en los dos últimos días
$dcs = (Get-ADDomainController -Filter *).HostNameforeach ($dc in $dcs) { Get-WinEvent -ComputerName $dc -FilterHashtable @{LogName='Security'; Id=4726; StartTime=(Get-Date).AddDays(-2)} -ErrorAction SilentlyContinue | ForEach-Object { $d = @{}; ([xml]$_.ToXml()).Event.EventData.Data | ForEach-Object { $d[$_.Name] = $_.'#text' }; [pscustomobject]@{Hora=$_.TimeCreated; DC=$dc; Cuenta=$d.TargetUserName; Quien=$d.SubjectUserName} } }Hora                DC                   Cuenta  Quien----                --                   ------  -----30/10/2026 9:14:02  dc02.contoso.local   lprado  adm-jgarcia

Para un cambio de atributo, repadmin /showobjmeta te dice en qué DC se originó y cuándo, y ahí buscas el 5136:

Símbolo del sistema · metadatos de replicación del usuario
repadmin /showobjmeta dc01 "CN=Laura Prado,OU=Usuarios,OU=Madrid,DC=contoso,DC=local" | findstr /i "department manager"  41822  Madrid\DC02  41822 2026-10-30 08:52:10  3 department

El registro de Seguridad de un DC se sobrescribe rápido. Aumenta su tamaño o reenvíalo a un SIEM: lo que no está guardado no se puede auditar.

5. MachineAccountQuota a cero

Por defecto, cualquier usuario autenticado puede unir hasta 10 equipos al dominio: lo marca el atributo ms-DS-MachineAccountQuota del dominio. Una vez delegada la unión de equipos a un grupo (apartado 1), ponlo a cero:

PowerShell (administrador del dominio)
Get-ADObject (Get-ADDomain).DistinguishedName -Properties ms-DS-MachineAccountQuota | Select-Object ms-DS-MachineAccountQuotams-DS-MachineAccountQuota-------------------------                       10Set-ADDomain -Identity contoso.local -Replace @{"ms-DS-MachineAccountQuota"="0"}

Antes de cambiarlo, comprueba qué cuentas unen equipos hoy (técnicos, la secuencia de tareas de MECM, el conector de Intune para unión híbrida) y que todas tienen la delegación en su OU.

Siguientes pasos

  • La guía Active Directory: usuarios y grupos cubre las altas, bajas y cuentas bloqueadas del día a día.
  • La guía PowerShell ayuda a convertir estas consultas en scripts programados.
  • El repositorio 19-ad-infra-health-check de mi GitHub revisa la salud de los controladores de dominio, y 37-iam-access-review sirve para revisar periódicamente quién tiene qué permisos.

¿Falta algo o en tu entorno es distinto? Escríbeme y lo corrijo.

What you'll get

The service desk resets passwords and unlocks accounts in its OU without being a domain admin, a user deleted by mistake comes back with their groups in a minute, and when someone asks "who touched this account?" you have the answer in the domain controllers' logs. It's day-to-day AD after creating users.

Before you start

  • An OU structure by site or object type (OU=Users,OU=Madrid, OU=Computers,OU=Madrid). You delegate on OUs, not on individual users.
  • Delegation groups created: for example GG-AD-Helpdesk-Madrid to reset and unlock, GG-AD-Joiners-Madrid to create users. You delegate to groups, never to people.
  • The ActiveDirectory PowerShell module (RSAT) and an account with admin rights over those OUs.
  • In Active Directory Users and Computers, View › Advanced Features turned on to see the Security tab.

1. Delegating with the wizard

Active Directory Users and Computers · Delegation of Control
contoso.localMadridUsersright-clickDelegate Control…
Users or groupsCONTOSO\GG-AD-Helpdesk-Madrid
Common tasks
Reset user passwords and force password change at next logon
Create, delete, and manage user accounts
Create, delete and manage groups
Modify the membership of a group
Next
Finish

Unlocking isn't among the common tasks. It's added with Create a custom task to delegate › Only the following objects in the folder › User objects › Property-specific, ticking Read lockoutTime and Write lockoutTime.

For a group to join computers in the computers OU: custom task, Computer objects, Create selected objects in this folder (and Delete, if it also removes them), then the permissions Reset password, Validated write to DNS host name, Validated write to service principal name and Write account restrictions.

The wizard only adds permissions; it can't remove them. To review or withdraw a delegation, go to the OU's Properties › Security › Advanced.

2. The same with dsacls and PowerShell

To document it in a change or repeat it on another site, the command line is better:

Command Prompt (admin) · delegations on OU=Users,OU=Madrid
# Reset password and force change at next logon (child user objects only)dsacls "OU=Users,OU=Madrid,DC=contoso,DC=local" /I:S /G "CONTOSO\GG-AD-Helpdesk-Madrid:CA;Reset Password;user"dsacls "OU=Users,OU=Madrid,DC=contoso,DC=local" /I:S /G "CONTOSO\GG-AD-Helpdesk-Madrid:RPWP;pwdLastSet;user"# Unlockdsacls "OU=Users,OU=Madrid,DC=contoso,DC=local" /I:S /G "CONTOSO\GG-AD-Helpdesk-Madrid:RPWP;lockoutTime;user"# Create and delete users in the OU, and manage themdsacls "OU=Users,OU=Madrid,DC=contoso,DC=local" /I:T /G "CONTOSO\GG-AD-Joiners-Madrid:CCDC;user"dsacls "OU=Users,OU=Madrid,DC=contoso,DC=local" /I:S /G "CONTOSO\GG-AD-Joiners-Madrid:GA;;user"The command completed successfully

/I:T applies to the object and its children, /I:S to children only. CA is an extended right (Reset Password), RPWP read and write a property, CCDC create and delete children of the given type, GA full control. For groups use CCDC;group and, to change members, RPWP;member;group.

To check later what a group has been delegated, (Get-Acl "AD:\OU=Users,OU=Madrid,DC=contoso,DC=local").Access lists each permission with its IdentityReference and ObjectType.

If the service desk can't reset a particular user's password, check their adminCount attribute. Accounts that are or were members of protected groups (Domain Admins, Account Operators…) get the AdminSDHolder permissions and don't inherit the OU delegation. That's by design.

3. The AD Recycle Bin

Without the Recycle Bin, a deleted user is restored from a backup with an authoritative restore. With it, the user comes back with all attributes and groups. It requires forest functional level Windows Server 2008 R2 or higher and, once enabled, it can't be disabled.

PowerShell (Enterprise Admin) · enable the Recycle Bin
Enable-ADOptionalFeature -Identity 'Recycle Bin Feature' -Scope ForestOrConfigurationSet -Target 'contoso.local'# It asks for confirmation: the action is irreversibleGet-ADOptionalFeature -Filter 'Name -like "Recycle*"' | Select-Object Name, EnabledScopes

It can also be enabled from Active Directory Administrative Center: right-click the domain › Enable Recycle Bin.

Restoring a deleted user:

PowerShell · restore a deleted user
Get-ADObject -Filter 'sAMAccountName -eq "lprado"' -IncludeDeletedObjects -Properties lastKnownParent, whenChanged | Select-Object Name, lastKnownParent, whenChangedName                                           lastKnownParent                           whenChanged----                                           ---------------                           -----------Laura Prado DEL:5c1e9a0e-7a43-4f0b-9d2e-...    OU=Users,OU=Madrid,DC=contoso,DC=local    30/10/2026 9:14:02Get-ADObject -Filter 'sAMAccountName -eq "lprado"' -IncludeDeletedObjects | Restore-ADObjectGet-ADUser lprado -Properties MemberOf | Select-Object Enabled, @{n='Groups';e={$_.MemberOf.Count}}
  • The object returns to its lastKnownParent. If that OU was also deleted, restore the OU first.
  • The window to recover is msDS-deletedObjectLifetime, which by default takes the value of tombstoneLifetime (180 days in current forests).

4. Who deleted or changed this user?

Domain controllers only log it if advanced audit policy is on. In the domain controllers' GPO: Computer Configuration › Policies › Windows Settings › Security Settings › Advanced Audit Policy Configuration › Audit Policies:

  • Account Management › Audit User Account Management: Success and Failure.
  • DS Access › Audit Directory Service Changes: Success. It also needs an auditing entry (SACL) on the OU or domain for Everyone with write property and delete.

The events you look for in the Security log:

EventWhat it means
4720A user account was created
4726A user account was deleted
4738A user account was changed (says which attributes, not the old values)
4740An account was locked out (logged by the DC holding the PDC emulator role)
4767An account was unlocked
5136A directory object was modified, with the old and new value

Each event is logged on the DC that made the change. To avoid guessing which, ask all of them:

PowerShell · who deleted lprado in the last two days
$dcs = (Get-ADDomainController -Filter *).HostNameforeach ($dc in $dcs) { Get-WinEvent -ComputerName $dc -FilterHashtable @{LogName='Security'; Id=4726; StartTime=(Get-Date).AddDays(-2)} -ErrorAction SilentlyContinue | ForEach-Object { $d = @{}; ([xml]$_.ToXml()).Event.EventData.Data | ForEach-Object { $d[$_.Name] = $_.'#text' }; [pscustomobject]@{Time=$_.TimeCreated; DC=$dc; Account=$d.TargetUserName; Who=$d.SubjectUserName} } }Time                DC                   Account  Who----                --                   -------  ---30/10/2026 9:14:02  dc02.contoso.local   lprado   adm-jgarcia

For an attribute change, repadmin /showobjmeta tells you which DC it originated on and when, and that's where you look for the 5136:

Command Prompt · the user's replication metadata
repadmin /showobjmeta dc01 "CN=Laura Prado,OU=Users,OU=Madrid,DC=contoso,DC=local" | findstr /i "department manager"  41822  Madrid\DC02  41822 2026-10-30 08:52:10  3 department

A DC's Security log is overwritten quickly. Increase its size or forward it to a SIEM: what isn't kept can't be audited.

5. MachineAccountQuota to zero

By default, any authenticated user can join up to 10 computers to the domain: it's set by the domain's ms-DS-MachineAccountQuota attribute. Once computer joins are delegated to a group (section 1), set it to zero:

PowerShell (Domain Admin)
Get-ADObject (Get-ADDomain).DistinguishedName -Properties ms-DS-MachineAccountQuota | Select-Object ms-DS-MachineAccountQuotams-DS-MachineAccountQuota-------------------------                       10Set-ADDomain -Identity contoso.local -Replace @{"ms-DS-MachineAccountQuota"="0"}

Before changing it, check which accounts join computers today (technicians, the MECM task sequence, the Intune connector for hybrid join) and that all of them have the delegation on their OU.

Next steps

  • The Active Directory: users and groups guide covers everyday joiners, leavers and locked accounts.
  • The PowerShell guide helps turn these queries into scheduled scripts.
  • The 19-ad-infra-health-check repository on my GitHub checks the health of the domain controllers, and 37-iam-access-review helps review regularly who holds which permissions.

Is something missing, or different in your environment? Get in touch and I'll fix it.

Tech Career Lab · newsletter

¿Te ha servido? Cada dos semanas envío una idea práctica para perfiles IT: LinkedIn, proyectos, networking y procesos de selección.Found this useful? Every two weeks I send one practical idea for IT professionals: LinkedIn, projects, networking and hiring processes.

Apúntate y llévate las 33 ideasSign up and get the 33 ideas →