Cum se configurează smartphone-uri și PC-uri. Portal informativ
  • Acasă
  • Windows 10
  • Descărcați utilizatorii din anunț. Utilizarea Get-ADUser pentru a obține diverse informații despre utilizatorii domeniului AD

Descărcați utilizatorii din anunț. Utilizarea Get-ADUser pentru a obține diverse informații despre utilizatorii domeniului AD

Scripturi pentru descărcarea tuturor utilizatorilor din MS Active Directory (ITGC)

Ivan Piskunov

Una dintre procedurile standard de audit ITGC pentru catalog Director activ este de a obține o descărcare a tuturor utilizatorilor de domeniu. Pe baza datelor obținute se formează apoi proceduri de testare, de exemplu, studierea listei de administratori sau identificarea utilizatorilor cu o parolă expirată. Cea mai eficientă modalitate de a crea o astfel de încărcare ar fi utilizarea interfata standard PowerShell , exemple din care vom lua în considerare în acest articol

1. Încărcare rapidă folosind un script PowerShell

Mai jos este un script PowerShell, unul dintre cele mai simple și moduri rapide obțineți o listă cu toți utilizatorii domeniului AD în format CSV, care se deschide fără probleme cu același Excel.

$objSearcher = New-Object System.DirectoryServices.DirectorySearcher $objSearcher.SearchRoot = "LDAP://ou=Utilizatori,ou=Departmets,dc=test,dc=ru" $objSearcher.Filter = "(&(objectCategory=person) (!userAccountControl:1.2.840.113556.1.4.803:=2))" $users = $objSearcher.FindAll() # Număr de conturi $users.Count $users | ForEach-Object ( $user = $_.Properties New-Object PsObject -Property @( Poziție = $user.description Department = $user.department Login = $user.userprincipalname Telefon = $user.telephonenumber Room = $user.physicaldeliveryofficename Complet nume = $user.cn ) ) | Export-Csv -NoClobber -Codificare utf8 -Calea C: list_domain_users.csv

Pentru ca scriptul să funcționeze pe sistemul dvs., trebuie să îl corectați ușor, și anume să introduceți parametrii necesari, adică cum in în acest exemplu aceștia sunt parametrii Utilizatori în departament Departamente în domeniu Test.ru. Și, de asemenea, indicați calea unde este salvat fișierul list_domain_users.csv

După descărcare, dacă îl deschideți imediat list_domain_users.csv , va părea de necitit, totuși, folosind mijloace standard, îl putem aduce cu ușurință în formatul de care avem nevoie. Deschideți în Excel list_domain_users.csv , selectați prima coloană, apoi accesați fila „Date” și faceți clic pe „Text după coloane”. Selectați „delimitat” și faceți clic pe „Următorul”. Gata!

!Este necesar de remarcat că acest script nu va afișa mai mult de 1000 de utilizatori. Este destul de potrivit pentru o companie mică, dar pentru cei cu un domeniu o cantitate mare utilizatorii ar trebui să recurgă la metodele descrise mai jos.

2. Cmdlet PowerShell avansat pentru obținerea de încărcări ale utilizatorilor Active Directory

Instrumentul Active Directory Module pentru Windows PowerShell (introdus în Windows Server 2008 R2 și versiuni ulterioare) vă permite să creați cmdlet-uri care efectuează diverse manipulări cu obiectele directorului AD. Cmdletul este utilizat pentru a obține informații despre utilizatori și proprietățile acestora Get-ADUser.

A începe lansați o fereastră Powershell cu drepturi de administrator și importați modulul Active Directory pentru acțiuni ulterioare:
Import-Module activedirectory

La listează toate conturile de domeniu și, să rulăm comanda:

Get-ADUser -filter *

La retrage plina de informatii despre toate atributele disponibile utilizator tuser, rulați comanda

Get-ADUser -identity tuser -properties *


De exemplu, ne interesează informații despre data modificării parolei și ora la care expiră . Rezultatul comenzii poate fi încărcat în fisier text:

Get-ADUser -filter * -properties PasswordExpired, PasswordLastSet, PasswordNeverExpires | ft Nume, PasswordExpired, PasswordLastSet, PasswordNeverExpires > C:tempusers.txt

Sau imediat încărcați în CSV , care va fi convenabil de exportat în Excel în viitor (în plus, folosind sort-object vom sorta tabelul după coloana PasswordLastSet și, de asemenea, vom adăuga unde condiție– numele de utilizator trebuie să conțină șirul „Dmitry”)

Get-ADUser -filter * -properties PasswordExpired, PasswordLastSet, PasswordNeverExpires | unde ($_.nume –cum ar fi „*Dmitry*”) | sort-object PasswordLastSet | select-object Name, PasswordExpired, PasswordLastSet, PasswordNeverExpires | Export-csv -path c:tempuser-password-expires-2015.csv

Nu este un secret pentru nimeni că încă de la prima versiune de PowerShell, Microsoft a încercat să facă din acesta principalul instrument de administrare Windows. Și în multe feluri funcționează! Azi pe exemple simple, vom arăta Caracteristici PowerShell, care poate fi folosit pentru a obține diverse informații despre utilizatorii Active Directory și atributele acestora.

Notă. Anterior, pentru a obține informații despre atributele conturilor de utilizator AD, trebuia să utilizați diverse instrumente: consola ADUC (inclusiv), un utilitar etc. Alegerea instrumentului s-a bazat de obicei pe sarcina la îndemână și pe abilitățile de programare ale administratorului.

S-a introdus PowerShell 2.0 modul special pentru lucrul cu Active Directory - (introdus în Windows Server 2008 R2), ale cărui cmdlet-uri vă permit să efectuați diverse manipulări cu obiecte director AD. Pentru a obține informații despre utilizatori domeniu Activ Director și proprietățile lor cmdlet Get-ADUser. Puteți utiliza cmdletul Get-ADUser pentru a obține valoarea oricărui atribut al unui existent cont utilizator în AD. În plus, puteți specifica diverse criterii de selecție și puteți genera liste de utilizatori de domeniu și atributele acestora.

În acest exemplu, vă vom arăta cum să utilizați cmdletul PowerShell Get-ADUser pentru a prelua informații despre când parola unui utilizator a fost modificată ultima dată și când expiră.

Lansați fereastra Powershll cu drepturi de administrator și importați modulul Active Directory cu comanda:

Import-Module activedirectory

Sfat. În Windows Server 2012 și versiuni ulterioare, puteți sări peste acest element, deoarece modulul PowerShell activ Directorul este conectat implicit.

În sistemele de operare client (Windows 10, de exemplu), pentru ca comandantul Get-AdUser să funcționeze, trebuie să instalați versiunea corespunzătoare de RSAT și să activați componenta în panoul de control Modulul Active Directory pentru Windows PowerShell (Server la distanta Instrumente de administrare -> Instrumente de administrare a rolurilor -> Instrumente AD DS și AD LDS -> Instrumente AD DS).

O listă completă a tuturor argumentelor cmdlet-ului Get-ADUser poate fi obținută după cum urmează:

Ajută Get-ADUser

Pentru a afișa o listă a tuturor conturilor de domeniu, executați comanda:

Get-ADUser -filter *

Formatul listei returnate nu este foarte convenabil de utilizat, sunt afișate doar câteva 10 de bază din peste 120 de atribute și proprietăți ale conturilor de utilizator (DN, SamAccountName, Name, UPN etc.) în plus, vedem că există nu există informații despre ora ultimei modificări a parolei.

Pentru a afișa informații complete despre toate atributele disponibile ale utilizatorului tuser, rulați comanda:

Get-ADUser -identity tuser -properties *

Deci vedem lista plina Atributele utilizatorului AD și valorile acestora asociate cu contul de utilizator. În continuare, vom trece la formatarea ieșirii cmdlet-ului Get-ADUser, astfel încât să fie afișate câmpurile de care avem nevoie. Suntem interesați de atributele:

  • Parola a expirat
  • PasswordLastSet
  • Parola nu expira niciodata

Să rulăm comanda:

Get-ADUser tuser -properties PasswordExpired, PasswordLastSet, PasswordNeverExpires

Acum datele utilizatorului conțin informații despre data modificării parolei și ora la care aceasta va expira. Să prezentăm informațiile într-o formă tabelară mai convenabilă:

Get-ADUser -filter * -properties PasswordExpired, PasswordLastSet, PasswordNeverExpires | ft Nume, PasswordExpired, PasswordLastSet, PasswordNeverExpires

Pentru a afișa datele utilizatorului dintr-o anumită unitate organizatorică, utilizați parametrul SearchBase:

Get-ADUser -SearchBase ‘OU=Moscow,DC=winitpro,DC=loc’ -filter * -properties PasswordExpired, PasswordLastSet, PasswordNeverExpires | ft Nume, PasswordExpired, PasswordLastSet, PasswordNeverExpires

Rezultatul comenzii poate fi exportat într-un fișier text:

Get-ADUser -filter * -properties PasswordExpired, PasswordLastSet, PasswordNeverExpires | ft Nume, PasswordExpired, PasswordLastSet, PasswordNeverExpires > C:\temp\users.txt

Sau în CSV, care va fi exportat în mod convenabil în Excel în viitor (folosind suplimentar sortare-obiect Să sortăm tabelul după coloana PasswordLastSet și să adăugăm, de asemenea, o condiție Unde– numele de utilizator trebuie să conțină șirul „Dmitry”:

Get-ADUser -filter * -properties PasswordExpired, PasswordLastSet, PasswordNeverExpires | unde ($_.nume –cum ar fi „*Dmitry*”) | sort-object PasswordLastSet | select-object Name, PasswordExpired, PasswordLastSet, PasswordNeverExpires | Export-csv -path c:\temp\user-password-expires-2015.csv

Astfel, puteți construi un tabel cu orice atribute de utilizator Active Directory necesare.

Pentru a obține o listă de conturi de utilizator AD pe baza unei caracteristici specifice, utilizați parametrul –Filter. Ca argumente pentru acest parametru, puteți specifica valoarea anumitor atribute de utilizator Active Directory, ceea ce va face ca cmdlet-ul Get-ADUser să fie aplicat utilizatorilor care corespund criteriilor de filtru.

Rezultatele utilizatorilor AD al căror nume începe cu Roman:

Get-ADUser -filter (nume -cum ar fi „Roman*”)

Get-ADUser -Filter (SamAccountName -cum ar fi „*”) | Măsură-Obiect

Lista tuturor conturilor active (neblocate) din AD:

Get-ADUser -Filter (Activat -eq „True”) | Selectați-obiect SamAccountName,Name,Nume,GivenName | Format-Tabel

Lista de conturi cu expirat acțiuni privind parola:

Get-ADUser -filter (Activat -eq $True) -properties passwordExpired | unde($_.Parola a expirat)

Lista de conturi active cu adrese de e-mail:

Get-ADUser -Filter ((mail -ne "null") -și (Activat -eq "true")) -Properties Nume,Prenume,Poștă | Selectați-Nume obiect, Prenume, Nume, e-mail | Format-Tabel

Sarcină: pentru o listă de conturi care sunt stocate într-un fișier text (un cont pe linie), trebuie să obțineți numărul de telefon al utilizatorului în AD și să încărcați informațiile într-un fișier text csv (poate fi importat cu ușurință în Esxel).

Import-Csv c:\ps\usernsme_list.csv | ForEach ( Get-ADUser -identity $_.user -Properties Name, telephoneNumber | Select Name, telephoneNumber | Export-CSV c:\ps\export_ad_list.csv -Append -Encoding UTF8 )

Următorul exemplu vă permite să descărcați agenda întreprinderii ca fișier csv, care poate fi importat ulterior în Outlook sau Mozilla Thunderbird:

Get-ADUser -Filter ((mail -ne "null") -și (Activat -eq "true")) -Properties Nume,Prenume,Poștă | Selectați-Nume obiect, Prenume, Nume, e-mail | Export-Csv -NoTypeInformation -Encoding utf8 -delimiter "," $env:temp\mail_list.csv

Utilizatori care nu și-au schimbat parola în ultimele 90 de zile:

$90_Days = (Get-Date).adddays(-90) Get-ADUser -filter ((passwordlastset -le $90_days))

$user = Get-ADUser winadmin -Properties thumbnailPhoto $user.thumbnailPhoto | Set-Content winadmin.jpg -Encoding byte

Lista grupurilor din care face parte contul de utilizator

Get-AdUser winadmin -Properties memberof | Selectați memberof -expandproperty memberof

În comentariile la articolul precedent, ne-am amintit despre contabilitate în Excel în loc de 1C. Ei bine, haideți să verificăm cât de mult cunoașteți Excel. Astăzi vă voi arăta cum să obțineți date din Active Directory și să lucrați cu ele fără macrocomenzi și PowerShell - doar cu mecanisme Office standard. De exemplu, puteți obține cu ușurință analize privind utilizarea sistemelor de operare în organizația dvs. dacă nu aveți deja ceva de genul Microsoft SCOM. Ei bine, sau pur și simplu încălziți-vă și luați-vă mințile de la scenarii.


Desigur, puteți obține datele ca în exemplele de mai jos literalmente cu o singură linie în PowerShell. Dar, în primul rând, PowerShell este prea plictisitor și, în al doilea rând, Excel poate actualiza dinamic datele - documentele rezultate pot fi publicate online și uitate de actualizarea lor.

Pentru a lucra cu date, voi folosi mecanismul Power Query. Pentru Office 2010 și 2013 va trebui să instalați un plugin; Microsoft Office 2016 are deja acest modul încorporat. Din păcate, ediția standard nu este suficientă pentru noi; vom avea nevoie de Professional.


Mecanismul în sine este conceput pentru a primi și procesa date dintr-o varietate de surse - de la ODBC vechi și fișiere text, la Exchange, Oracle și Facebook. Mai multe detalii despre mecanism și limbajul de scripting încorporat „M” au fost deja scrise pe Habré, dar voi analiza câteva exemple de utilizare a Power Query pentru a obține date din Active Directory.

Încălzire: să vedem când s-au conectat utilizatorii noștri

Solicitarea către baza de date a domeniului în sine este creată în fila „Date ― Solicitare nouă ― Din alte surse ― Din Active Directory”.



Specificați sursa de date.


Va trebui să selectați un nume de domeniu și să furnizați informațiile necesare de conectare. Apoi, selectați tipul de obiecte, în acest exemplu - utilizator. În partea dreaptă a ferestrei de previzualizare, interogarea rulează deja, afișând previzualizare date.



Pregătim o cerere și admirăm previzualizarea.


Ar trebui să pregătiți solicitarea în avans făcând clic pe butonul „editați” și selectând coloanele necesare. În esență, aceste coloane sunt clase, fiecare dintre ele conține un set de atribute specifice. Obiect activ Director, cu excepția coloanei principale Numele de afișare, care în sine este un atribut. Mă voi concentra pe cursuri utilizator, persoană, topȘi securitatePrincipal. Acum trebuie să selectați atributele cerute din fiecare clasă folosind „extensia” - o pictogramă cu două săgeți la antetul coloanei:

  • Clasă utilizator extinde prin alegere lastLogonTimestampȘi userAccountControl;
  • V persoană hai sa alegem număr de telefon;
  • V topcând este creat;
  • si in securitatePrincipalSamAccountName.


Extindem cererea.


Acum să setăm filtrul: în special, pentru a nu obține conturi blocate, atributul userAccountControl trebuie să aibă valoarea 512 sau 66048. Filtrul poate fi diferit în mediul dumneavoastră. Puteți citi mai multe despre atribut în documentația Microsoft.



Aplicarea unui filtru.


Uneori, Excel detectează incorect formatul datelor, în special valoarea atributului lastLogonTimestamp. Dacă o astfel de nenorocire ți se întâmplă brusc, poți seta formatul corect în fila „Convertire”.

Acum, coloana userAccountControl ar trebui ștearsă - nu este deloc necesară pe afișaj. Și faceți clic pe „Descărcați și închideți”.


Rezultatul este o farfurie care are nevoie doar de mici retușuri de finisare. De exemplu, redenumiți coloanele în ceva mai ușor de citit. Și personalizați actualizare automata date.


Actualizarea automată la deschiderea unui tabel sau prin timeout este configurată în fila „Date” din „Proprietăți”.



Configurarea actualizării datelor.


După finalizarea instalării actualizării, puteți oferi în siguranță tabelul departamentului de personal sau serviciului de securitate - spuneți-i cine s-a conectat la sistem și când.


Codul de solicitare în limba „M” se află sub spoiler.

let Source = ActiveDirectory.Domains("domain.ru"), domain.ru = Source()[#"Categorii de obiecte"], user1 = domain.ru(), #"Remote Columns" = Table.RemoveColumns(user1,( „organizationalPerson”, „shadowAccount”, „posixAccount”, „msExchOmaUser”, „msExchBaseClass”, „msExchIMRecipient”, „msExchCertificateInformation”, „msExchMultiMediaUser”, „msExchMailStorage”, „msExchCustomAstinguishedme”, „distinguishedme”, „) #"Expanded element securityPrincipal" = Table.ExpandRecordColumn(#"Coloane eliminate", "securityPrincipal", ("sAMAccountName"), ("sAMAccountName")), #"Expanded element top" = Table.ExpandRecordColumn(#"Expanded element securityPrincipal ", "top", ("whenCreated"), ("whenCreated")), #"Expanded element person" = Table.ExpandRecordColumn(#"Expanded element top", "person", ("telephoneNumber"), ("telephoneNumber") ")), #"Expanded element user" = Table.ExpandRecordColumn(#"Expanded element person", "user", ("lastLogonTimestamp", "userAccountControl"), ("lastLogonTimestamp", "userAccountControl")), #"Rânduri cu filtru aplicat" = Table.SelectRows(#"Element utilizator extins", fiecare ( = 512 sau = 66048)), #"Tip modificat" = Table.TransformColumnTypes(#"Rânduri cu filtru aplicat",(("lastLogonTimestamp", type datetime))), #"Remoted columns1" = Table.RemoveColumns(#"Changed type", ("userAccountControl")) în #"Remoted columns1"

Crearea unei agende de adrese sau ce să faci când portal corporativ nu este prietenos cu AD

O altă variantă folosind Excelîmpreună cu Active Directory - aceasta este formarea unei agende de adrese pe baza datelor AD. Este clar că agenda va fi actualizată doar dacă domeniul este în regulă.


Să creăm o cerere pentru un obiect utilizator, extindeți clasa utilizator V Poștă, și clasa persoană V număr de telefon. Să ștergem toate coloanele, cu excepția distinsName― structura domeniului repetă structura întreprinderii, deci numele Unități organizaționale corespund denumirilor departamentelor. În mod similar, grupurile de securitate pot fi folosite ca bază pentru numele departamentelor.


Acum de la linie CN=Nume de utilizator, OU=Departament de contabilitate, OU=Divizii, DC=domeniu, DC=ru trebuie să extrageți direct numele departamentului. Cel mai simplu mod de a face acest lucru este să utilizați delimitatorii din fila Transformare.



Extragerea textului.


Eu folosesc ca delimitatori OU=Și ,OU=. În principiu, o virgulă este suficientă, dar o joc în siguranță.



Introduceți delimitatori.


Acum, folosind filtrul, puteți tăia inutil OU, cum ar fi utilizatorii blocați și incorporat, configurați sortarea și încărcați datele în tabel.



Vedere a tabelului rezumativ.

Raport rapid asupra compoziției posturilor de lucru, fără a introduce agenți sau alt preparat

Acum să încercăm să creăm un tabel util obținând date pe computere. Vom face un raport asupra celor folosite de companie sisteme de operare: pentru a face acest lucru, vom crea o solicitare, dar de data aceasta vom selecta calculator.



Facem o cerere pentru obiectul computer.


Să lăsăm clasele coloanei calculatorȘi topși extinde-le:

  • Clasă calculator extinde prin alegere cn, sistem de operare, Operating SystemServicePackȘi OperatingSystemVersion;
  • in clasa top hai sa alegem când este creat.


Cerere avansată.


Dacă doriți, puteți face un raport numai pe sistemele de operare server. De exemplu, filtrați după atributul operatingSystem sau operatingSystemVersion. Nu voi face acest lucru, dar voi corecta afișarea timpului de creație - mă interesează doar anul. Pentru a face acest lucru, în fila „Conversie”, selectați coloana de care avem nevoie și selectați „Anul” în meniul „Data”.



Extragem anul din momentul în care computerul a intrat în domeniu.


Acum tot ce rămâne este să ștergeți coloana de nume afișat ca inutilă și să încărcați rezultatul. Datele sunt gata. Acum puteți lucra cu ei ca la o masă obișnuită. Mai întâi, să creăm un tabel pivot în fila „Inserare” - „Tabel pivot”. Să fim de acord cu alegerea sursei de date și să configuram câmpurile acesteia.



Setările câmpului tabelului pivot.


Acum nu mai rămâne decât să personalizați designul după gustul dvs. și să admirați rezultatul:



Tabel rezumat pentru calculatoare în AD.


Dacă doriți, puteți adăuga un grafic rezumat, de asemenea, în fila „Inserare”. În „Categorie” (sau în „Rânduri”, după gust) adăugați sistem de operare, la date ― cn. În fila „Design”, puteți alege tipul de diagramă care vă place; eu am preferat diagrama circulară.



Graficul proporțiilor.


Acum este clar că, în ciuda actualizării în curs, numărul total de stații de lucru cu Windows XP și servere cu Windows 2003 este destul de mare. Și există ceva pentru care să lupți.


Codul de solicitare este sub spoiler.

let Source = ActiveDirectory.Domains("domain.ru"), domain.ru = Source()[#"Categorii de obiecte"], computer1 = domain.ru(), #"Remote Columns" = Table.RemoveColumns(computer1,( "user", "organizationalPerson", "persoana")), #"Other removed columns" = Table.SelectColumns(#"Remoted columns", ("displayName", "computer", "top")), #"Expand item computer" = Table.ExpandRecordColumn(#"Alte coloane la distanță", "computer", ("cn", "operatingSystem", "operatingSystemServicePack", "operatingSystemVersion"), ("cn", "operatingSystem", "operatingSystemServicePack", " operatingSystemVersion")), #"Extended top element" = Table.ExpandRecordColumn(#"Element computer extins", "sus", ("whenCreated"), ("whenCreated")), #"Extracted year" = Table.TransformColumns( #"Expanded element top",(("whenCreated", Data.Year))), #"Remoted columns1" = Table.RemoveColumns(#"Extracted year",("displayName")) in #"Remoted columns1"

Adaugă etichete

În acest articol, vom analiza capacitatea PowerShell de a gestiona grupuri de domenii Active Directory. Vom vedea cum să creăm grup nouîn AD, adăugați utilizatori la acesta (sau ștergeți), afișați o listă de utilizatori de grup și alții acțiuni utile cu grupuri de domenii, care sunt extrem de utile în administrarea de zi cu zi. Pentru a gestiona grupuri AD, modulul Active Directory PowerShell oferă următoarele cmdleturi de bază:

Pentru a utiliza aceste cmdleturi în sesiunea dvs. PowerShell, trebuie încărcat un modul special de interacțiune AD - Modul Active Directory pentru Windows PowerShell. Acest modul a fost introdus pentru prima dată în Windows Server 208 R2. În Windows Server 2012 și versiuni ulterioare, acest modul este activat în mod implicit. Pe calculatoare client poate fi instalat și activat ca una dintre componentele RSAT. Puteți verifica dacă modulul este încărcat astfel:

Get-Module -Listavailable

După cum puteți vedea, modulul ActiveDirectory este încărcat. Dacă nu, importați-l cu comanda:

Import-Module activedirectory

Lista completă a comenzilor modulelor poate fi obținută după cum urmează:

Get-Command -Module ActiveDirectory

Există un total de 147 de cmdleturi disponibile în modul, dintre care 11 pot lucra cu grupuri.

Get-Command -Module ActiveDirectory -Nume „*Grup*”

Iată lista lor:

  • Add-ADPrincipalGroupMembership
  • Get-ADAccountAuthorizationGroup
  • Get-ADGroup
  • Get-ADGroupMember
  • Get-ADPrincipalGroupMembership
  • Nou-ADGroup
  • Eliminați-ADGroup
  • Eliminați-ADPrincipalGroupMembership
  • Set-ADGroup

Să creăm un nou grup în containerul Active Directory (OU) specificat folosind comanda Nou-ADGroup:

Nou-ADGroup "TestADGroup" -calea "OU=Groups,OU=Moscow,DC=corp,dc=winitpro,DC=ru" -GroupScope Global -PassThru –Verbose

Folosind atributul Descriere puteți specifica o descriere a grupului și folosind Numele de afișare schimbați numele afișat.

Parametru GroupScope Puteți specifica unul dintre următoarele tipuri de grup:

  • 0 = DomainLocal
  • 1 = Global
  • 2 = Universal

Puteți crea un grup de distribuție astfel:

New-ADGroup "TestADGroup-Distr" -calea "OU=Groups,OU=Moscow,DC=corp,dc=winitpro,DC=ru" -GroupCategory Distribution -GroupScope Global -PassThru –Verbose

Add-AdGroupMember – adăugați utilizatori la un grup AD

Puteți adăuga utilizatori la un grup Active Directory utilizând Add- AdGroupMember. Să adăugăm doi utilizatori la noul grup:

Add-AdGroupMember -Identity TestADGroup -Membri utilizator1, utilizator2

Dacă lista de utilizatori pe care trebuie să-i adăugați la grup este destul de mare, puteți salva lista de conturi într-un fișier CSV, apoi importați acest fișierși adăugați fiecare utilizator în grup.

Formatul fișierului CSV este următorul (lista de utilizatori câte unul pe linie, numele coloanei – utilizatori)

Import-CSV .\users.csv -Utilizatori header | Pentru fiecare obiect (Add-AdGroupMember -Identity ‘TestADGroup’ -membri $_.users)

Pentru a obține toți membrii unui grup (grup A) și pentru a-i adăuga la un alt grup (grup B), utilizați această comandă:

Get-ADGroupMember „GroupA” | Get-ADUser | PentruFiecare-Object(Add-ADGroupMember -Identitate „Grupul-B” -Membri$_)

Dacă trebuie să copiați membrii tuturor grupurilor imbricate într-un grup nou (recursiv), trebuie să utilizați următoarea comandă:

Get-ADGroupMember -Identitate „GroupA” -Recursiv | Get-ADUser | PentruFiecare-Object(Add-ADGroupMember -Identity „GroupB” -Members$_)

Remove-ADGroupMember – eliminați utilizatorii dintr-un grup

Pentru a elimina utilizatori dintr-un grup AD, trebuie să utilizați comanda Remove-ADGroupMember. Să eliminăm doi utilizatori din grup:

Remove-ADGroupMember -Identity TestADGroup -Members user1, user2

Confirmați eliminarea utilizatorilor din grup:

Dacă trebuie să eliminați utilizatori dintr-un grup conform unei liste dintr-un fișier CSV, utilizați această comandă:

Import-CSV .\users.csv -Utilizatori header | Pentru fiecare obiect (Remove-ADGroupMember -Identity ‘TestADGroup’ -membri $_.users)

Get-ADGroup – obțineți informații despre un grup AD

Cmdletul vă va ajuta să obțineți informații despre grup Get-ADGroup:

Get-ADGroup „TestADGroup”

Această comandă afișează informații despre principalele atribute ale grupului (DN, tip de grup, nume, SID). Pentru a afișa valoarea tuturor atributelor grupului de domenii AD, executați următoarea comandă:

Get-ADGroup "TestADGroup" -properties *

După cum puteți vedea, acum sunt afișate atribute precum ora creării și modificării grupului, descrierea etc.

Folosind cmdletul Get-ADGroup, puteți găsi toate grupurile care vă interesează folosind un model specific. De exemplu, trebuie să găsiți toate grupurile AD ale căror nume conțin expresia administratori :

Get-ADGroup -LDAPFilter „(nume=*admins*)” | Format-Tabel

Get-ADGroupMember – afișați o listă de utilizatori ai grupului AD

Afișează o listă de utilizatori ai grupului:

Get-ADGroupMember „TestADGroup”

Pentru a lăsa doar nume de utilizator în rezultate, rulați:

Get-ADGroupMember „TestADGroup”| ft nume

Dacă în acest grup alte grupuri de domenii sunt incluse, pentru a afișa lista completă a membrilor, inclusiv toate grupurile imbricate, utilizați opțiunea Recursiv.

Get-ADGroupMember „server-admins” -recursiv| ft nume

Pentru a exporta o listă de conturi aparținând unui anumit grup într-un fișier CSV (pentru o utilizare ulterioară în Excel), rulați următoarea comandă:

Get-ADGroupMember „server-admins” -recursive| ft samaccountname| Out-File c:\ps\admins.csv

Pentru a adăuga datele contului de utilizator în AD la un fișier text, vom folosi cmdletul. De exemplu, pe lângă cont, trebuie să afișați poziția și numărul de telefon al utilizatorului grupului:

Get-ADGroupMember -Identity ’server-admins’ -recursive| foreach ( Get-ADUser $_ -properties title, OfficePhone|Select-Object title, OfficePhone )

(Get-ADGroupMember -Identity „domain admins”).Număr

S-a dovedit că în grupul „administratori de domeniu” avem 7 conturi de administrator.

Pentru a găsi o listă de grupuri goale într-o anumită OU, utilizați această comandă:

Get-ADGroup -Filter * -Properties Members -searchbase „OU=Moscow,DC=corp,dc=winitpro,DC=ru” | unde (-nu $_.membri) | selectați Nume

0

Am următorul script de lucru care verifică dacă lista mare utilizatorii din fișierul CSV ca membru al grupului AD și scrie rezultatele în results.csv.

Nu sunt sigur cum să convertesc scriptul, astfel încât să pot schimba $group = "InfraLite" în $group = DC .\List_Of_AD_Groups.CSV .

Deci, scriptul nu returnează doar potriviri pentru un grup AD, ci returnează potriviri pentru cele 80 de grupuri AD conținute în List_of_AD_groups.csv. Scrierea DA/NU pentru fiecare grup AD într-o nouă coloană CSV (sau dacă acest lucru nu este posibil, crearea unui fișier CSV separat pentru fiecare grup cu rezultate va face același lucru.

Aș putea face acest lucru manual schimbând valoarea din $group și numele fișierului de export și repornire script de 80 de ori, dar a trebuit să fie rapid cu PS pentru a face acest lucru

de exemplu results.csv?:

NUME AD_GROUP1 AD_GROUP2 AD_GROUP80 etc etc. user1 da nu da user2 nu nu da user3 nu da nu echo "UserName`InfraLite" >> results.csv $users = GC .\user_list.csv $group = "InfraLite" $members = Get-ADGroupMember -Identity $group -Recursive | Selectați -ExpandProperty SAMAccountName pentru fiecare ($user în $users) ( dacă ($members -contains $user) ( echo "$user $group`tYes" >> results.csv ) else ( echo "$user`tNu" >> rezultate .csv))

  • 2 raspunsuri
  • Triere:

    Activitate

0

O soluție trivială la problema dvs. ar fi să vă includeți codul existent într-o altă buclă și să creați un fișier de ieșire pentru fiecare grup:

$groups = Get-Content „C:\groups.txt” pentru fiecare ($grup în $groups) ( $members = Get-ADGroupMember ... ... )

O abordare mai elegantă ar fi să creați un șablon de mapare a grupului, să-l clonați pentru fiecare utilizator și să completați o copie cu membrii grupului utilizatorului. Ceva de genul acesta ar trebui să funcționeze:

$template = @() Get-Content „C:\groups.txt” | PentruFiecare-Obiect ( $template[$_] = $false ) $grupuri = @() Get-ADGroup -Filter * | PentruFiecare-Obiect ( $groups[$_.DistinguishedName] = $_.Name ) Get-ADUser -Filter * -Properties MemberOf | PentruFiecare-Obiect ( $groupmap = $template.Clone() $_.MemberOf | ForEach-Object ( $groups[$_] ) | Where-Object ( $groupmap.ContainsKey($_) ) | ForEach-Object ( $groupmap [$_] = $true ) New-Object -Type PSObject -Property $groupmap ) | Export-Csv „C:\user_group_mapping.csv” -NoType

0

Mă joc cu asta de ceva vreme și cred că am găsit o modalitate de a-ți obține exact ceea ce căutai.

Cred că Ansgar era pe drumul cel bun, dar nu l-am putut face să facă ceea ce a urmat. El a menționat că la momentul redactării acestui articol nu avea acces la mediul AD.

Iată ce am venit cu:

$UserArray = Obține conținut "C:\Temp\Users.txt" $GroupArray = Obține conținut "C:\Temp\Groups.txt" $OutputFile = "C:\Temp\Something.csv" # Configurarea unui tabel hash pentru utilizare ulterioară $UserHash = New-Object -TypeName System.Collections.Hashtable # Bucla exterioară pentru a adăuga utilizatori și apartenență la UserHash $UserArray | ForEach-Object( $UserInfo = Get-ADUser $_ -Properties MemberOf # Stripte sintaxa LPAP doar la SAMAccountName al grupului $Memberships = $UserInfo.MemberOf | ForEach-Object( ($_.Split(",")) .replace("CN=","") ) #Adăugarea perechii User=Membership la Hash $UserHash.Add($_,$Memberships) ) #Bucla exterioară pentru a crea un obiect per utilizator $Results = $UserArray | ForEach-Object( # Creați mai întâi un obiect simplu $User = New-Object -TypeName PSCustomObject -Property @( Name = $_ ) # Adăugați în mod dinamic membri la obiect, pe baza $GroupArray $GroupArray | ForEach-Object ( #Verificare $UserHash pentru a vedea dacă grupul apare în lista de membri ai utilizatorului $UserIsMember = $UserHash.($User.Name) -conține $_ #Adăugarea proprietății la obiect și valoarea $User | Add-Member -MemberType NoteProperty -Name $ _ -Value $UserIsMember ) #Returnarea obiectului la variabila Return $User ) #Convertiți obiectele într-un CSV, apoi scoateți-le $Results | ConvertTo-CSV -NoTypeInformation | Out-File $OutputFile

Să sperăm că totul are sens. Am comentat cât am putut. Ar fi foarte ușor să convertiți la ADSI dacă nu ați avea instalat RSAT pe orice mașină pe care rulați acest lucru. Dacă aveți nevoie, anunțați-mă și voi face câteva modificări rapide.

Cele mai bune articole pe această temă