Descifrando UserAccountControl: cómo funciona realmente y qué puedes hacer al respecto
Trabajar con Active Directory a veces puede ser como intentar leer jeroglíficos. Una de las partes confusas es comprender el atributo UserAccountControl: es un gran número que básicamente consiste en una colección de bits con valores 1 o 0 que representan diferentes propiedades de la cuenta. Si alguna vez has revisado la cuenta de un usuario en ADUC y te has preguntado qué significan esos códigos o cómo cambiarlos, esta guía es para ti. Aprenderás por qué esta máscara de bits es crucial, cómo decodificarla rápida y fácilmente, e incluso cómo ajustarla con PowerShell. Conocer cómo funciona UserAccountControl puede ahorrarte mucha frustración, especialmente si intentas crear scripts para modificar cuentas o averiguar por qué una cuenta está deshabilitada sin tener que revisar manualmente las páginas de propiedades. Es útil porque, en lugar de docenas de atributos individuales, AD lo mantiene todo compacto en un solo número. Cuando entiendes qué bits están activados, todo cobra mucho más sentido.
Cómo reparar o configurar UserAccountControl en Active Directory
Método 1: Leer el valor de UserAccountControl directamente desde AD
Dado que AD almacena todo como una máscara de bits, el primer paso es ver ese número en las propiedades u obtenerlo mediante PowerShell. En una máquina, podría verlo como `0x10202` o algo como `66050`.Puede obtenerlo mediante PowerShell con: powershell Get-ADUser -Identity jkelly -Properties UserAccountControl | Select-Object Name, UserAccountControl o, para obtener una visualización más intuitiva, decodifíquelo usted mismo. Dado que este número representa diferentes indicadores activados, como una cuenta deshabilitada o una contraseña que nunca caduca, intentar interpretarlo sin formato puede parecer como decodificar un mensaje secreto.> Nota: El valor es un entero decimal, pero es más fácil convertirlo a hexadecimal (como `0x10202`) para comprender los bits.—
Método 2: Decodificación manual de UserAccountControl
Ahora, aquí está el truco: cada propiedad (como «Cuenta deshabilitada» o «Contraseña sin vencimiento») corresponde a un bit específico de ese número. Normalmente, para crear scripts, es necesario ver qué bits están activos. Puede escribir una función de PowerShell simple que tome este valor decimal y muestre qué opciones están habilitadas: powershell Function Decode-UserAccountControl ($UAC) { $flags = @( @{ Nombre=’SCRIPT’; Valor=0x0001 }, @{ Nombre=’ACCOUNTDISABLE’; Valor=0x0002 }, @{ Nombre=’HOMEDIR_REQUIRED’; Valor=0x0008 }, @{ Nombre=’LOCKOUT’; Valor=0x0010 }, @{ Nombre=’PASSWD_NOTREQD’; Valor=0x0020 }, @{ Nombre=’PASSWD_CANT_CHANGE’; Valor=0x0040 }, @{ Nombre=’ENCRYPTED_TEXT_PWD_ALLOWED’; Valor=0x0080 }, @{ Nombre=’TEMP_DUPLICATE_ACCOUNT’; Valor=0x0100 }, @{ Nombre=’CUENTA_NORMAL’; Valor=0x0200 }, @{ Nombre=’CUENTA_DE_CONFIANZA_ENTRODOMINIO’; Valor=0x0800 }, @{ Nombre=’CUENTA_DE_CONFIANZA_ESTACIÓN_DE_TRABAJO’; Valor=0x1000 }, @{ Nombre=’CUENTA_DE_CONFIANZA_SERVIDOR’; Valor=0x2000 }, @{ Nombre=’NO_EXPIRAR_CONTRASEÑA’; Valor=0x10000 }, @{ Nombre=’CUENTA_DE_INICIO_DE_SESIÓN_MNS’; Valor=0x20000 }, @{ Nombre=’TARJETA_INTELIGENTE_REQUERIDA’; Valor=0x40000 }, @{ Nombre=’DE_CONFIANZA_PARA_DELEGACIÓN’; Valor=0x80000 }, @{ Nombre=’NO_DELEGADO’; Valor=0x100000 }, @{ Nombre=’USE_DES_KEY_ONLY’; Valor=0x200000 }, @{ Nombre=’DONT_REQ_PREAUTH’; Valor=0x400000 }, @{ Nombre=’PASSWORD_EXPIRED’; Valor=0x800000 }, @{ Nombre=’TRUSTED_TO_AUTH_FOR_DELEGATION’; Valor=0x1000000 } ) $enabledFlags = @() foreach ($flag in $flags) { if ($UAC -band $flag. Value) { $enabledFlags += $flag. Name } } return $enabledFlags -join ‘, ‘ } Ejecutar algo como: powershell Decode-UserAccountControl 66050 devolverá la lista legible por humanos de indicadores activos, como «ACCOUNTDISABLE, CUENTA_NORMAL, CONTRASEÑA NO_EXPIRA».Esto hace que sea mucho más fácil entender qué sucede con una cuenta con solo mirar ese número.—
Método 3: Cambiar los indicadores de UserAccountControl en AD mediante PowerShell
Una vez que comprenda qué partes desea activar, cambiar las propiedades de la cuenta mediante programación es bastante sencillo. Los cmdlets `Set-ADUser` y `Set-ADComputer` de PowerShell son sus aliados. Por ejemplo, si desea deshabilitar una cuenta, puede establecer el indicador `-Enabled` en `$false` o directamente establecer el atributo `UserAccountControl` en un número específico. Supongamos que desea deshabilitar una cuenta: powershell # Deshabilitar cuenta Set-ADUser -Identity jkelly -AccountDisabled $true O, si prefiere configurar directamente el `UserAccountControl` sin formato, debe calcular el nuevo valor: powershell # Por ejemplo, configure la cuenta como deshabilitada y el usuario no pueda cambiar la contraseña: $newUAC = 0x0200 + 0x0002 + 0x0040 # NORMAL_ACCOUNT + ACCOUNTDISABLE + PASSWD_CANT_CHANGE Set-ADUser -Identity jkelly -Replace @{UserAccountControl=$newUAC} Solo tenga cuidado: manipular directamente ese número hexadecimal puede ser riesgoso si no sabe qué bits se están configurando o borrando. Es mejor usar los cmdlets proporcionados para los escenarios más comunes.> Nota: Cambiar `UserAccountControl` directamente debe hacerse con cuidado. El uso de los cmdlets y parámetros específicos reduce los errores.—
Resumen
Familiarizarse con UserAccountControl puede parecer abrumador al principio, pero una vez que comprendes que es solo un conjunto de componentes, todo empieza a funcionar. Descifrarlo con funciones sencillas de PowerShell es revolucionario, especialmente si administras muchas cuentas y no quieres usar ADUC para cada una. Ajusta esos componentes, comprueba su estado actual y quizás automatiza algunas tareas de bloqueo/desbloqueo de cuentas con scripts. Con suerte, esto hará que todo sea menos como descifrar pergaminos antiguos y más como un rompecabezas manejable. Si esto facilita un poco la administración de la cuenta de un usuario, misión cumplida.
Resumen
- Utilice PowerShell para comprobar los valores de UserAccountControl (`Get-ADUser`).
- Descodifique ese valor en indicadores comprensibles con un script o una función.
- Ajuste las propiedades de la cuenta configurando o borrando bits a través de PowerShell (`Set-ADUser`).
- Tenga cuidado al manipular UAC directamente; prefiera los cmdlets integrados con parámetros.
Resumen
Dominar esta máscara de bits no siempre es intuitivo, pero vale la pena el esfuerzo. Una vez que se domina la decodificación y configuración de UserAccountControl, la gestión de cuentas se vuelve mucho más flexible. Ya sea que se estén implementando cambios masivos o solucionando problemas por los que un usuario no puede iniciar sesión, comprender estos aspectos ayuda a aclarar las cosas. Ojalá esto ayude a alguien a reducir las conjeturas, al menos un poco.