Hoe converteer je de waarden van het UserAccountControl-attribuut in Active Directory?

UserAccountControl ontcijferen: hoe het precies werkt en wat je eraan kunt doen

Werken met Active Directory kan soms net zo lastig zijn als het ontcijferen van hiërogliefen. Een van de verwarrende aspecten is het begrijpen van het UserAccountControl-attribuut: een groot getal dat in feite een verzameling bits is, ingesteld op 1 of 0, die verschillende accounteigenschappen vertegenwoordigen. Als je ooit in ADUC naar een gebruikersaccount hebt gekeken en je je afvroeg wat die codes betekenen of hoe je ze kunt wijzigen, dan is deze handleiding iets voor jou. Je leert waarom dit bitmasker cruciaal is, hoe je het snel en eenvoudig kunt decoderen en zelfs hoe je het met PowerShell kunt aanpassen. Weten hoe UserAccountControl werkt, kan veel frustratie voorkomen, vooral als je accountwijzigingen wilt scripten of wilt achterhalen waarom een ​​account is uitgeschakeld zonder handmatig door pagina’s vol eigenschappen te hoeven spitten. Het is handig omdat AD, in plaats van tientallen afzonderlijke attributen, alles compact in één getal samenvat. Als je begrijpt welke bits aan staan, wordt alles een stuk duidelijker.

Hoe u UserAccountControl in Active Directory kunt repareren of configureren

Methode 1: De waarde van UserAccountControl rechtstreeks uit Active Directory lezen.

Omdat Active Directory alles opslaat als een bitmasker, is de eerste stap het bekijken van dat getal in de eigenschappen of het verkrijgen ervan via PowerShell. Op de ene machine ziet u het mogelijk als `0x10202` of iets als `66050`.U kunt dit ophalen met PowerShell met: `powershell Get-ADUser -Identity jkelly -Properties UserAccountControl | Select-Object Name, UserAccountControl` of, voor een meer begrijpelijke weergave, kunt u het zelf decoderen. Omdat dit getal verschillende ingeschakelde vlaggen vertegenwoordigt, zoals een uitgeschakeld account of een wachtwoord dat nooit verloopt, kan het interpreteren van dit ruwe getal aanvoelen als het ontcijferen van een geheim bericht.> Opmerking: De waarde is een decimaal geheel getal, maar het is het gemakkelijkst om deze naar hexadecimaal (zoals `0x10202`) te converteren om de bits te begrijpen.—

Methode 2: UserAccountControl handmatig decoderen

En hier komt de truc: elke eigenschap (zoals “Account is uitgeschakeld” of “Wachtwoord verloopt nooit”) komt overeen met een specifieke bit in dat getal. Meestal moet je voor scripting weten welke bits actief zijn. Je kunt een eenvoudige PowerShell-functie schrijven die deze decimale waarde gebruikt en weergeeft welke opties zijn ingeschakeld: powershell Function Decode-UserAccountControl ($UAC) { $flags = @( @{ Name=’SCRIPT’; Value=0x0001 }, @{ Name=’ACCOUNTDISABLE’; Value=0x0002 }, @{ Name=’HOMEDIR_REQUIRED’; Value=0x0008 }, @{ Name=’LOCKOUT’; Value=0x0010 }, @{ Name=’PASSWD_NOTREQD’; Value=0x0020 }, @{ Name=’PASSWD_CANT_CHANGE’; Value=0x0040 }, @{ Name=’ENCRYPTED_TEXT_PWD_ALLOWED’; Value=0x0080 }, @{ Name=’TEMP_DUPLICATE_ACCOUNT’; Value=0x0100 }, @{ Naam=’NORMAAL_ACCOUNT’; Waarde=0x0200 }, @{ Naam=’INTERDOMAIN_TRUST_ACCOUNT’; Waarde=0x0800 }, @{ Naam=’WORKSTATION_TRUST_ACCOUNT’; Waarde=0x1000 }, @{ Naam=’SERVER_TRUST_ACCOUNT’; Waarde=0x2000 }, @{ Naam=’WACHTWOORD NIET_VERLOPEN’; Waarde=0x10000 }, @{ Naam=’MNS_LOGON_ACCOUNT’; Waarde=0x20000 }, @{ Naam=’SMARTCARD_VEREIST’; Waarde=0x40000 }, @{ Naam=’VERTROUWD_VOOR_DELEGATIE’; Waarde=0x80000 }, @{ Naam=’NIET_GEDELEGEERD’; Waarde=0x100000 }, @{ Name=’USE_DES_KEY_ONLY’; Value=0x200000 }, @{ Name=’DONT_REQ_PREAUTH’; Value=0x400000 }, @{ Name=’PASSWORD_EXPIRED’; Value=0x800000 }, @{ Name=’TRUSTED_TO_AUTH_FOR_DELEGATION’; Value=0x1000000 } ) $enabledFlags = @() foreach ($flag in $flags) { if ($UAC -band $flag. Value) { $enabledFlags += $flag. Name } } return $enabledFlags -join ‘, ‘ } Door iets als: powershell Decode-UserAccountControl 66050 uit te voeren, krijg je een leesbare lijst met actieve vlaggen, zoals “ACCOUNTDISABLE, NORMAL_ACCOUNT, “WACHTWOORD VERLOOPT NIET”.Dit maakt het veel gemakkelijker om te begrijpen wat er met een account aan de hand is, alleen al door naar dat nummer te kijken.

Methode 3: Gebruikersaccountbeheer-vlaggen in Active Directory wijzigen met PowerShell

Als je eenmaal begrijpt welke instellingen je wilt wijzigen, is het programmatisch aanpassen van accounteigenschappen vrij eenvoudig. De PowerShell-cmdlets `Set-ADUser` en `Set-ADComputer` zijn daarbij erg handig. Als je bijvoorbeeld een account wilt uitschakelen, kun je de vlag `-Enabled` instellen op `$false`, of je kunt het attribuut `UserAccountControl` rechtstreeks instellen op een specifiek getal. Stel dat u een account wilt uitschakelen: powershell # Account uitschakelen Set-ADUser -Identity jkelly -AccountDisabled $true Of, als u de ruwe `UserAccountControl` rechtstreeks wilt instellen, moet u de nieuwe waarde berekenen: powershell # Bijvoorbeeld, account uitschakelen zodat gebruiker het wachtwoord niet kan wijzigen: $newUAC = 0x0200 + 0x0002 + 0x0040 # NORMAL_ACCOUNT + ACCOUNTDISABLE + PASSWD_CANT_CHANGE Set-ADUser -Identity jkelly -Replace @{UserAccountControl=$newUAC} Wees voorzichtig — rechtstreeks met dat hexadecimale getal knoeien kan riskant zijn als u niet weet welke bits worden ingesteld of gewist. Het is beter om de meegeleverde cmdlets te gebruiken voor de meeste gangbare scenario’s.> Opmerking: Het rechtstreeks wijzigen van `UserAccountControl` moet met zorg gebeuren. Het gebruik van de specifieke cmdlets en parameters vermindert fouten.—

Samenvatting

Het kan in eerste instantie ontmoedigend lijken om met Gebruikersaccountbeheer (UserAccountControl) aan de slag te gaan, maar zodra je begrijpt dat het slechts een verzameling bits is, valt alles op zijn plaats. Het ontcijferen ervan met eenvoudige PowerShell-functies is een echte gamechanger, vooral als je veel accounts beheert en niet voor elk account ADUC wilt doorlopen. Pas die bits aan, controleer hun huidige status en automatiseer eventueel het vergrendelen/ontgrendelen van accounts met een script. Hopelijk maakt dit het geheel minder op het ontcijferen van oude manuscripten en meer op een beheersbare puzzel. Als dit het accountbeheer voor één gebruiker een beetje eenvoudiger maakt, is de missie geslaagd.

Samenvatting

  • Gebruik PowerShell om de UserAccountControl-waarden te controleren (`Get-ADUser`).
  • Decodeer die waarde met behulp van een script of functie in begrijpelijke vlaggen.
  • Pas accounteigenschappen aan door bits in te stellen of te wissen via PowerShell (`Set-ADUser`).
  • Wees voorzichtig bij het rechtstreeks manipuleren van UAC; gebruik bij voorkeur de ingebouwde cmdlets met parameters.

Samenvatting

Het is niet altijd even intuïtief om dit bitmasker te doorgronden, maar het is de moeite waard. Zodra je het decoderen en configureren van UserAccountControl onder de knie hebt, wordt het beheren van accounts een stuk flexibeler. Of je nu scripts maakt voor bulkwijzigingen of problemen oplost waarom een ​​gebruiker niet kan inloggen, inzicht in deze bits helpt om de zaken te verduidelijken. Hopelijk helpt dit iemand om – in ieder geval een beetje – minder te hoeven gissen.