[av_textblock size=” av-medium-font-size=” av-small-font-size=” av-mini-font-size=” font_color=” color=” id=” custom_class=” template_class=” av_uid=’av-lkqz9won’ sc_version=’1.0′ admin_preview_bg=”]
Active Directory (AD) är en av de IT-produkter som tenderar att bli uppblåsta. Det är en IT-produkt som många människor gör ändringar i varje dag och som i slutändan blir en enorm hög med saker som på något sätt fortfarande fungerar. Även den mest välmenande IT-avdelning verkar alltid hamna i en Active Directory-miljö med massor av användarkonton som inte längre behövs, GPO:er som är kopplade till OU:er som folk inte ens visste fanns och datorkonton som representerade datorer som sedan länge är borta. Detta tillstånd verkar smyga sig på människor. En dag sätter sig någon framför Active Directory (AD) Users and Computers (ADUC) och får en känsla av att “Wow! Detta måste åtgärdas.”. När någon i din organisation väl får det ögonblicket kommer det förmodligen att bli en skrämmande och överväldigande uppgift. Du kanske startar ett projekt för att “rensa upp” men du kommer snart att upptäcka att det inte räcker med att högerklicka och radera. Det finns många sätt att göra detta projekt till en framgång, och den första uppgiften är att definiera vad “sanering” innebär. I den här artikeln ska vi fokusera på oanvända användarkonton. Mer specifikt kommer vi att fokusera på tre attribut som ett användarkonto kan ha som gör att det anses “raderbart” Dessa attribut är inaktiverade konton, konton som inte har använts på X dagar och konton med utgångna lösenord.
Ett av de enklaste sätten att hitta dessa potentiellt oanvända konton är att använda PowerShell. ActiveDirectory PowerShell är en modul som innehåller en mycket användbar cmdlet som heter Search-AdAccount som gör det enkelt att skapa frågor och returnera exakt det vi behöver. Innan du kan använda denna cmdlet måste du dock hämta RSAT-paketet (Remote Server Administration Tools) från Microsoft. När det paketet är installerat bör du ha ActiveDirectory-modulen, och du är redo att köra! För att någon av nedanstående koder ska fungera förutsätter jag att du använder en Windows-dator som är domänansluten till samma domän som de användare du vill hitta. Med det sagt, låt oss sätta igång! Den första uppgiften är att hitta funktionshindrade konton. För att hitta inaktiverade konton använder vi cmdlet Search-ADAccount. Denna cmdlet har en enda parameter som heter Disabled som gör denna uppgift enkel. Kör bara Search-AdAccount -AccountDisabled och vips visas alla dina inaktiverade konton. Observera att jag använde parametern UsersOnly eftersom den här cmdletten även kan hitta inaktiverade datorkonton.
C:> Search-ADAccount -UsersOnly -AccountDisabled -Server dc
AccountExpirationDate :
DistinguishedName : CN=Guest,CN=Users,DC=mylab,DC=local
Aktiverad : Falsk
LastLogonDate :
LockedOut :
Falskt namn : Gäst
ObjektKlass : användare
ObjektGUID : 89cfaf2b-c6d8-4ae0-a720-e2da7d201717
PasswordExpired : Falskt
PasswordNeverExpires : Sant
SamAccountName : Gäst
SID : S-1-5-21-4117810001-3432493942-696130396-501
UserPrincipalName :
…………
En annan vanlig misstänkt att rensa upp är inaktiva användarkonton och är lite svårare att spåra. “Inaktiv” är en subjektiv term så för våra syften kommer vi att definiera “inaktiv” som alla användare som har ett värde för LastLogonTimeStemp som är äldre än 30 dagar. Det finns många artiklar på Internet om hur man hittar inaktiva användare, men många inser inte att det är mycket enklare än att bygga komplicerade AD LDAP-filter. Stödet är inbyggt i Search-AdAccount. Vi kan använda Search-AdAccount -AccountInactive -UsersOnly -Timespan 30.00:00:00 för att omedelbart hitta alla AD-användarkonton som inte har använts på 30 dagar. Det finns dock ett förbehåll. Microsoft uppdaterar bara attributet LastLogonTimestamp, som är detsamma som LastLogonDate, var 14:e dag för att förhindra replikeringsstormar. På grund av denna egenskap hos AD kommer den här metoden (eller till och med Get-AdUser eller Get-AdComputer med det avancerade filtret) inte att vara helt korrekt om du försöker få fram konton med inaktivitet som är äldre än 14 dagar. Så var försiktig. Slutligen måste vi hitta alla AD-användare som har ett utgånget lösenord som inte längre behövs. Det här är knepigt eftersom “aktiva” användarkonton kan ha ett lösenord som har gått ut om det nyligen har gått ut. Jag behöver inte bara hitta utgångna lösenord utan även hur länge sedan det var de gick ut. Om de gick ut för t.ex. 30 dagar sedan eller längre sedan kan jag anta att dessa användarkonton i själva verket är inaktiva. För att ta reda på hur länge sedan ett lösenord löpte ut måste jag först ta reda på den maximala lösenordsåldern för domänens lösenordspolicy. Jag kan göra detta med Get-AdDefaultDomainPasswordPolicy cmdlet. $MaxPasswordAge = (Get-ADDefaultDomainPasswordPolicy).MaxPasswordAge.Days Därefter kan jag hitta alla användarkonton som har ett utgånget lösenord och sedan filtrera dessa användarkonton genom att se när deras lösenord senast angavs och se till att det var före den maximala tiden som lösenordet kunde vara plus 30 (hur gammalt jag definierar att kontot ska vara). Koden kommer att se ut ungefär så här: Search-AdAccount -PasswordExpired -UsersOnly | Where-Object {((Get-Date) – (Get-AdUser -Filter “samAccountName -eq $_.SamAccountName”).PasswordLastSet) -lt ($MaxPasswordAge + 30)} Nästa gång du söker efter inaktiva poster i AD bör du titta på Search-AdAccount för att se om det redan gör det du försöker göra. Det kan spara dig massor av tid! Adam Bertram är Microsoft Windows Cloud and Datacenter Management MVP och har författat flera utbildningskurser, medverkar regelbundet i flera tryckta och online-publikationer och presenterar vid olika användargrupper och konferenser. Du hittar Adam på adamtheautomator.com eller på Twitter på @adbertram.
[/av_textblock]