How to get an accurate count/list of your Domain Admins (using Powershell)

By Andrei Ungureanu - Last updated: Friday, February 15, 2013 - Save & Share - Leave a Comment

De multe ori ne punem intrebarea cine are drepturi administrative pe domeniul nostru. Si cel mai simplu raspuns e ca membrii din grupurile de admini sunt administratorii. In special cei ce fac parte din grupurile urmatoare:

Administrators

Domain Admins

Enterprise Admins

Schema Admins

Nota: Un rogue admin se poate ascunde si poate sta in hibernare si fara sa faca parte din aceste grupuri. De aceea verificati intotdeauna acl-urile de pe resursele importante, adminsdholder si cine este owner pe anumite obiecte ce e posibil sa se regaseasca in grupurile de mai sus. Acesta fiind doar un exercitiu, o sa ma limitez sa mentionez doar aceste grupuri de baza.

O metoda ar fi sa luam la mana grupurile din ADUC si sa notam cine face parte din ele.

image

Dar pentru o organizatie mare cu multe echipe si multe roluri lucrurile devin mai complicate. Mai ales atunci cand ai grupuri ce fac parte din aceste grupuri critice. Stiu, sfatul este sa nu adaugati grupuri pentru ca sunt greu de urmarit si controlat insa cateodata nu aveti de ales.

Solutia propusa vine via Powershell. Pe vremuri tot lucram cu vbscript si ca sa faci task-ul asta corect era nevoie de foarte multe linii de cod. In Powershell nu mai este asa si totul se rezolva chiar banal as spune.

Importand modulul ActiveDirectory folosind comanda Import-Module ActiveDirectory avem acces la cmdlet-ul Get-ADGroupMember:

image

Output-ul nu arata foarte grozav pentru cineva care nu este familiar cu Powershell insa poate fi “manevrat” foarte usor. Important este ca mai sus avem un group in grupul Domain Admins. Iar problema asta o rezolvam cu parametrul –recursive:

image

Si in felul acest vom vedea membrii grupului care face parte din Domain Admins. Iar pentru a face output-ul mai simplu de citit putem selecta doar anumite valori si trimite totul catre Format-Table:

image

Dar exista situatii cand userii fac parte direct din mai multe grupuri de au drept de admin la nivel de domeniu si asta poate genera duplicate in astfel de interogari – atunci cand concatenam membrii grupurilor descrise mai sus. Iar mai jos o sa dau ca exemplu cum putem culege rezultatele din amble grupuri Administrators si Domain Admins:

image

Se pot observa deja duplicatele, insa fiti foarte atenti, nu toate conturile de adminstrator sunt identice. Am rulat script-ul intr-un subdomeniu si prin grupul Enterprise Admins am ajuns sa am in lista si contul de Administrator din domeniul root. Deci vor trebui filtrate dupa altceva in afara de nume. Poate fi SID, GUID sau DN. In exemplul de mai jos am filtrat folosind DN-ul.

image

Am selectat doar valorile dorite folosind Select-Object –si am scos obiectele unice folosind Sort-Object cu parametrul –Unique.

Modelul de mai sus il puteti extinde pentru a include si celelalte grupuri pe care nu le-am mai adaugat la sfarsitul exemplului.

Sper sa va fie de folos!

PS: Probabil acelasi rezultat se poate obtine si folosind Quest AD Cmdlets (pentru cei ce inca sunt pe Windows 2003).

Posted in Active Directory, Scripting • Tags: , Top Of Page

Write a comment