Adam Automator
O utilizare populară a PowerShell funcționează cu Active Directory Directory Services (AD). Există atât de multe lucruri de economisire a timpului pe care PowerShell le poate face cu obiectele AD. Folosind PowerShell, obțineți membrii grupului AD și grupurile economisesc o grămadă de timp.
Grupurile Active Directory sunt o modalitate excelentă de a segmenta conturile de utilizator. Grupurile permit administratorilor să definească accesul la resurse pe mai multe sisteme.
În acest articol, să folosim PowerShell pentru a obține membrii grupului AD și a exporta membrii grupului AD. Puteți utiliza apoi aceste informații pentru a genera tone de rapoarte interesante.
Cuprins
Cerințe preliminare
Dacă doriți să continuați în acest articol, asigurați-vă că aveți următoarele cerințe pregătite:
- Lucrul pe un computer Windows 10, conectat la domeniu
- Conectat cu un utilizator care poate citi grupuri AD și conturi de utilizator
- Aveți instalat modulul PowerShell Active Directory
Învățarea noțiunilor de bază
Pentru a interoga grupurile AD și membrii grupului, aveți la dispoziție două cmdleturi PowerShell – Get-AdGroup
și Get-AdGroupMember
.
Get-ADGroup
interogă un controler de domeniu și returnează obiecte de grup AD. Get-AdGroupMember
privește în interiorul fiecărui grup și returnează toate conturile de utilizator, grupurile, contactele și alte obiecte care există în acel grup.
Obținerea grupurilor AD
Pentru a găsi grupuri AD cu PowerShell, puteți utiliza cmdlet-ul Get-ADGroup
. Fără parametri, Get-ADGroup
va interoga AD și va returna toate grupurile dintr-un domeniu utilizând parametrul Filter
. Este necesar parametrul Filter
. Există pentru a limita grupurile returnate pe baza diferitelor criterii.
De exemplu, pentru a găsi toate grupurile fără a lua în considerare niciun criteriu, utilizați Get-ADGroup
și specificați o caracteră comodă ( asterisc) pentru parametrul Filter
. Puteți vedea un exemplu mai jos. Derularea prin toate aceste grupuri poate dura ceva timp dacă aveți sute sau chiar mii în domeniul dvs.
Dacă trebuie să găsiți un singur grup, puteți utilizați parametrul Identity
.
Parametrul Identity
este un parametru comun între toate cmdleturile Active Directory PowerShell. Vă permite să limitați interogarea la un singur obiect AD. De exemplu, dacă trebuia să verificați dacă există un grup numit HR, puteți afla executând comanda de mai jos.
Obținerea membrilor grupului AD
Utilizarea PowerShell pentru listarea membrilor grupului AD necesită cmdlet-ul Get-ADGroupMember
. Această cmdlet primește obiecte de utilizator, grup și computer dintr-un anumit grup. Poate că trebuie să găsiți toți membrii grupului Administratori. În forma sa cea mai simplă, ar trebui să utilizați pur și simplu parametrul Identity
din nou, specificând numele grupului ca mai jos.
Rețineți că
Get-AdGroupMember
returnează numai apartenența la grup pentru utilizatori, grupuri și computere. Nu va returna alte obiecte AD, cum ar fi contactele.
Enumerarea membrilor grupului din membrii grupului
După cum știți, grupurile AD nu poate conține doar conturi de utilizator, ci și alte grupuri numite și cuibărire. Când un grup este imbricat în interiorul altui grup, membrii grupului respectiv moștenesc aceleași permisiuni atribuite grupului părinte.
În mod implicit, cmdletul PowerShell Get-AdGroupMember
nu returnați membrii grupului imbricat. Pentru a remedia acest lucru, puteți utiliza parametrul Recursive
. De exemplu, puteți găsi membri ai grupurilor imbricate în interiorul grupului HR utilizând parametrul Recursive
așa cum se arată mai jos.
Obținerea mai multor grupuri / membri simultan
Dacă trebuie să interogați AD pentru mai multe grupuri diferite sau membri de grup simultan, puteți face acest lucru și utilizând o buclă PowerShell foreach. O buclă foreach execută o comandă sau un cod pentru fiecare articol dintr-o colecție. În acest caz, acea colecție va fi o listă cu numele grupurilor.
Poate că trebuie să găsiți toți membrii grupului în grupurile de resurse umane, contabilitate și IT. Pentru aceasta, mai întâi ați crea o colecție sau o serie de nume de grupuri. Exemplul de mai jos definește această colecție ca $groupNames
. Apoi, pentru fiecare nume din acea colecție, rulați Get-ADGroupMember
furnizând numele fiecărui grup parametrului Identity
.
Puteți utiliza alternativ cmdlet-ul
ForEach-Object
pentru a face o buclă peste grupuri.
Utilizarea acreditărilor alternative
La fel ca multe alte cmdlet-uri PowerShell, cmdlet-urile grupului AD au un Credential
parametru.În mod implicit, ori de câte ori rulați un cmdlet de grup AD, acesta folosește acreditările conectate pentru a interoga Active Directory. Acest comportament dictează faptul că trebuie să fiți pe un computer conectat la domeniu conectat ca utilizator Active Directory care are permisiunea.
Dar dacă sunteți pe un computer de grup de lucru sau trebuie să vă autentificați la AD ca altfel utilizator? În acest caz, puteți utiliza parametrul Credential
. Acest parametru vă permite să specificați un nume de utilizator și o parolă de utilizat pentru autentificare.
De exemplu, poate contul dvs. de utilizator nu are dreptul să efectueze o sarcină AD. Aveți un cont de serviciu cu drepturi suplimentare. Puteți fi conectat ca utilizator standard, dar încă vă autentificați cu contul de serviciu, așa cum se arată mai jos.
cmdlet-ul Get-Credential
solicită un nume de utilizator / o parolă pentru a crea un acreditare. Această acreditare este apoi trecută la Get-AdGroup
cmdlet pentru autentificare.
Parametrul
Credential
este omniprezent în PowerShell pentru furnizarea acreditării de autentificare. Pentru mai multe informații, citiți Utilizarea cmdletului PowerShell Get-Credential și toate acreditările.
Obținerea membrilor grupului cu Get-ADGroup?
Poate suna contraintuitiv, dar puteți obține membrii grupului și cu cmdlet-ul Get-ADGroup
.
Se pare că Get-ADGroup
returnează o proprietate pentru fiecare grup numit members
. Aceasta este o colecție de obiecte AD care sunt membre ale unui grup.
De exemplu, pentru a găsi din nou membrii grupului în acel grup HR fără a utiliza Get-ADGroupMember
, ați putea faceți așa ceva:
De ce să folosiți această metodă peste cealaltă? Principala diferență este că proprietățile members
conțin toate tipurile de obiecte AD – nu doar utilizatori, computere și alte grupuri.
Poate că aveți contacte în diferite grupuri . Când rulați Get-ADGroupMember
, acele contacte nu vor apărea. Dar dacă îi spuneți Get-ADGroup
să returneze toți membrii din acel grup împreună cu extinderea acelei colecții așa cum se arată mai jos, veți vedea contactele.
Găsirea anumitor atribute AD
În secțiunea de bază de mai sus, pur și simplu returnai toate grupurile și membrii grupului. Informațiile returnate pentru fiecare grup și membru al grupului sunt doar un subset al atributelor AD asociate fiecărui tip de obiect.
Poate că doriți să vedeți adresa de e-mail a unui cont de utilizator, data ultimei conectări sau alt atribut AD asociat ? Pentru a face acest lucru, va trebui să devii creativ.
Poate că ai reușit să găsești toți membrii grupului din grupul HR, dar trebuie să vezi și adresa de e-mail a fiecărui cont de utilizator?
Filtrarea rezultatelor
Până în prezent, ați găsit toate grupurile și membrii grupului, dar într-un mediu de lucru de zi cu zi, rareori trebuie să faceți acest lucru. Șansele sunt, va trebui să găsiți doar un număr limitat din fiecare articol. Cmdleturile grupului AD au câteva modalități prin care puteți gestiona acest lucru.
Parametrul filtrului
După cum sa menționat mai sus, ambele cmdleturi au Filter
parametru. Acest parametru vă permite să limitați ceea ce este returnat în multe moduri diferite în afara scopului acestui articol.
Utilizând parametrul Filter
, puteți limita rezultatele cu orice AD atribut precum numele, tipul de grup, adresa de e-mail, ultima conectare pentru utilizatori și așa mai departe.
De exemplu, poate doriți să găsiți numai grupuri de securitate. În acest caz, trebuie să specificați un atribut GroupCategory
și să setați o condiție pentru a vă asigura că numai Security
sunt returnate.
Poate că doriți să găsiți toate grupurile de securitate, dar acestea nu trebuie să fie grupuri locale de domeniu. Apoi ați adăuga o altă condiție (de data aceasta folosind operatorul -ne
) pentru a împiedica returnarea oricăror grupuri locale de domeniu.
Dacă doriți să aflați cum să creați filtre de interogare, asigurați-vă că verificați Învățarea filtrelor Active Directory și LDAP în PowerShell.
Limitarea rezultatelor grupurilor în funcție de unitatea organizatorică (OU)
Poate aveți diverse grupuri cuibărite în unitățile de stocare. Nu doriți neapărat să găsiți toate grupurile, ci doar grupurile dintr-un anumit OU. În acest caz, puteți utiliza parametrul SearchBase
.
Parametrul SearchBase
vă permite să specificați distincția OU name (DN) pentru a începe să căutați grupuri. De exemplu, poate aveți un OU numit Locations la rădăcina domeniului dvs. În OU Locații, aveți fiecare OU locație creată, cum ar fi Austin, New York și Los Angeles. Căutați doar grupuri în OU din New York și trebuie să restricționați vizualizarea celorlalte.
Un exemplu de structură AD OU este prezentat mai jos.Observați că există alte grupuri în afara unităților de stocare a locațiilor.
Poate că trebuie să găsiți toate grupurile de AD care se află doar în unitatea de stocare din New York. Pentru a limita interogarea, ar trebui să utilizați parametrul SearchBase
care să furnizeze DN așa cum se arată mai jos. Toate grupurile din interiorul unității de locații sunt returnate.
Dar acum trebuie să găsiți toate grupurile din toate unitățile de stocare sub unitatea de locații. Get-ADGroup
returnează numai grupuri în unitatea de locații în sine – nu în unitățile de stocare pentru copii.
Pentru a returna grupurile din unitățile de stocare pentru copii, ar trebui să utilizați SearchScope
. Acest parametru este similar cu parametrul Recursive
, în sensul că va inspecta și obiectele copil.
De exemplu, pentru a găsi toate grupurile din orice unitate de stocare sub OU Locații, specificați Subtree
sau 2
. Această valoare pentru SearchScope
îi spune Get-ADGroup
să se uite recursiv la toți copiii, copiii mari și la unitățile de stocare în jos.
Pentru o defalcare completă a opțiunilor parametrilor SearchScope
, consultați documentația Get-ADGroup
.
Exportul grupurilor și membrilor AD
Deci, în sfârșit, știți cum să interogați și să returnați grupurile și membrii grupului de care aveți nevoie. Toate aceste informații sunt trimise la consola PowerShell. Dar acum trebuie să introduceți aceste informații în fișier CSV sau foaie de lucru Excel.
Singurul lucru pe care trebuie să-l faceți acum este să trimiteți toate aceste informații într-un fișier.
un CSV
Un format popular pentru a exporta informații AD este un CSV. PowerShell are un cmdlet la îndemână care vă permite să creați cu ușurință fișiere CSV din ieșirea PowerShell numită Export-Csv
.
Puteți crea un fișier CSV din orice comandă acoperită în acest articol prin canalizare către Export-Csv
. Folosind exemplul de mai jos, veți redirecționa toate ieșirile pe care Get-AdGroup
le-ar reveni la consolă, într-un fișier CSV.
Pentru mai multe informații despre acest cmdlet la îndemână, consultați Export-Csv: Modul PowerShell de a trata fișierele CSV ca cetățeni de primă clasă.
Exportul în Excel
PowerShell nu are un mod nativ de a exporta informații în Excel. Dar, puteți descărca oricând modulul comunității gratuit numit ImportExcel. Acest modul aduce abilități de export de tip CSV direct în foile de lucru Excel. Pentru a instala modulul PowerShell, rulați Install-Module ImportExcel -Scope CurrentUser
.
Folosind exemplul de mai sus, în locul unui fișier CSV, ați trebuit să exportați grupurile într-o foaie de lucru Excel, Ați folosi cmdletul Export-Excel
așa cum se arată mai jos.
Modulul ImportExcel are o mulțime de funcționalități cu Excel. Dacă aveți nevoie de o foaie de lucru mai îndrăgită, probabil că are o funcție pentru dvs.
Pentru mai multe informații despre utilizarea modulului ImportExcel, citiți acest articol. Oferă o introducere excelentă pentru unele cazuri de utilizare obișnuite pe care le poate gestiona.
Concluzie
Folosind doar două cmdleturi PowerShell, puteți face aproape orice cu grupurile AD. Acest articol a fost doar o introducere în funcționalitatea disponibilă pentru dvs. Folosiți cunoștințele adunate aici, urmați câteva dintre linkurile către scufundări subiecte mai profunde din articol și vedeți ce puteți construi!