Cum se configurează smartphone-uri și PC-uri. Portal informativ
  • Acasă
  • Interesant
  • 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)

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)

Dedicat utilizării PowerShell pentru a administra AD. Ca punct de plecare, autorul a decis să ia 10 sarcini tipice de administrare AD și să vadă cum pot fi simplificate folosind PowerShell:

  1. Resetați parola utilizatorului
  2. Activați și dezactivați conturile
  3. Deblocați contul de utilizator
  4. sterge-ti contul
  5. Găsiți grupuri goale
  6. Adăugați utilizatori într-un grup
  7. Listează membrii grupului
  8. Găsiți conturi de computer vechi
  9. Dezactivați contul de computer
  10. Găsiți computere după tip

În plus, autorul menține un blog (pe PowerShell, desigur), vă recomandăm să aruncați o privire - jdhitsolutions.com/blog. Și cele mai actualizate pe care le poți obține de pe Twitter-ul lui twitter.com/jeffhicks.
Deci, mai jos este traducerea articolului „Top 10 Active Directory Tasks Rezolvate cu PowerShell”.

Gestionarea Active Directory (AD) cu Windows PowerShell este mai ușoară decât credeți și vreau să vă dovedesc acest lucru. Puteți pur și simplu să luați scripturile de mai jos și să le utilizați pentru a rezolva o serie de sarcini de gestionare AD.

Cerințe

Pentru a utiliza PowerShell pentru a gestiona AD, există câteva cerințe care trebuie îndeplinite. Voi demonstra cum funcționează cmdleturile AD pe un exemplu de mașină Windows 7.
Pentru a utiliza cmdleturile, trebuie să aveți un controler de domeniu Windows Server 2008 R2 sau puteți descărca și instala serviciul Active Directory Management Gateway pe DC-uri vechi. Citiți cu atenție documentația înainte de instalare; Este necesară repornirea.
Pe partea client, descărcați și instalați (RSAT) fie pentru Windows 7, fie pentru Windows 8. În Windows 7, va trebui să deschideți Panouri de control capitol Programeși alegeți Activați sau dezactivați funcțiile Windows. Găsi Instrumente de administrare la distanță a serveruluiși extindeți secțiunea Instrumente de administrare a rolurilor. Selectați elementele adecvate pentru AD DS și AD LDS Tools, în special rețineți că articolul trebuie selectat Modul Active Directory pentru Windows PowerShell, așa cum se arată în Figura 1. (În Windows 8, toate instrumentele sunt selectate implicit). Acum suntem gata de lucru.

Figura 1 Activarea instrumentelor AD DS și AD LDS

Sunt autentificat cu un cont cu drepturi de administrator de domeniu. Majoritatea cmdlet-urilor pe care vi le voi arăta vă vor permite să specificați acreditări alternative. În orice caz, recomand să citești ajutorul ( Obține ajutor) și exemple pe care le voi demonstra mai jos.
Porniți o sesiune PowerShell și importați modulul:

PS C:\> Import-Module ActiveDirectory

Importul creează un nou PSDrive, dar nu îl vom folosi. Cu toate acestea, puteți vedea ce comenzi sunt în modulul importat.

PS C:\> get-command -module ActiveDirectory

Frumusețea acestor comenzi este că, dacă pot folosi o comandă pentru un obiect AD, atunci poate fi folosită pentru 10, 100 și chiar 1000. Să vedem cum funcționează unele dintre aceste cmdleturi.

Sarcina 1: Resetați parola utilizatorului

Să începem cu o sarcină tipică: resetarea parolei unui utilizator. Puteți face acest lucru ușor și simplu prin cmdlet Set-ADAccountPassword. Partea dificilă este că noua parolă trebuie să fie calificată ca un șir securizat: o bucată de text care este criptată și stocată în memorie pe durata sesiunii PowerShell. Mai întâi, să creăm o variabilă cu o nouă parolă:
PS C:\> $new=Read-Host „Introduceți noua parolă” -AsSecureString

Apoi, introduceți o nouă parolă:

Acum putem extrage contul (folosind samAccountname este cea mai bună opțiune) și setați o nouă parolă. Iată un exemplu pentru utilizatorul Jack Frost:

PS C:\> Set-ADAccountPassword jfrost -NewPassword $new

Din păcate, există o eroare cu acest cmdlet: -trece prin, -ce-ar fi dacă, Și -A confirma nu funcționează. Dacă preferați comanda rapidă, încercați următoarele:

PS C:\>Set-ADAccountPassword jfrost -NewPassword(ConvertTo-SecureString -AsPlainText -String" [email protected]"-forta)

Am nevoie de Jack să-și schimbe parola data viitoare când mă conectez și actualizez contul folosind Set-ADUser.

PS C:\> Set-ADUser jfrost -ChangePasswordAtLogon $True

Rezultatele execuției cmdlet-ului nu sunt scrise în consolă. Dacă trebuie făcut, utilizați -Adevărat. Dar pot afla dacă operațiunea a avut succes sau nu prin extragerea numelui de utilizator folosind cmdletul Get-ADUser si specificarea proprietatii Parola a expirat așa cum se arată în figura 2.


Orez. 2. Rezultatele cmdlet-ului Get-ADUser cu proprietatea PasswordExpired

Concluzie: resetarea parolei unui utilizator cu PowerShell nu este deloc dificilă. Mărturisesc că resetarea parolei este, de asemenea, ușoară printr-o clipă. Utilizatori și computere Active Directory console Microsoft Management Console (MMC). Dar utilizarea PowerShell este în regulă dacă trebuie să delegați o sarcină, nu doriți să implementați snap-in-ul menționat mai sus sau să vă resetați parola ca parte a unui proces IT automat mare.

Sarcina 2: Activați și dezactivați conturile

Acum haideți să dezactivăm contul. Vom continua să lucrăm cu Jack Frost. Acest cod folosește parametrul -ce-ar fi dacă, pe care este posibil să-l vedeți în alte cmdleturi care fac modificări pentru a-mi testa comanda fără a o rula.

PS C:\> Disable-ADAccount jfrost -whatif Ce se întâmplă dacă: Efectuarea operației „Set” pe țintă „CN=Jack Frost, OU=staff,OU=Testing,DC=GLOBOMANTICS,DC=local”.

Și acum să dezactivăm pe bune:

PS C:\> Dezactivați-ADAccount jfrost

Și când vine timpul să activăm contul, ce cmdlet ne va ajuta?

PS C:\> Enable-ADAccount jfrost

Aceste cmdleturi pot fi utilizate într-o expresie pipeline, permițându-vă să activați sau să dezactivați câte conturi doriți. De exemplu, acest cod va dezactiva toate conturile din departamentul de vânzări (Vânzări)

PS C:\> get-aduser -filter „departament -eq „vânzări”” | dezactivare-adaccount

Desigur, scriind un filtru pentru Get-ADUser destul de complicat, dar aici se utilizează parametrul -ce-ar fi dacăîmpreună cu cmdletul Dezactivați-ADAcont vine în ajutor.

Sarcina 3: Deblocați contul de utilizator

Luați în considerare o situație în care Jack și-a blocat contul în timp ce încerca să introducă o nouă parolă. În loc să încerce să-și găsească contul prin GUI, procedura de deblocare se poate face cu o comandă simplă.

PS C:\> Deblocare-ADAccount jfrost

Cmdletul acceptă și parametrii -ce-ar fi dacăȘi -A confirma.

Sarcina 4: Ștergeți contul

Nu contează câți utilizatori ștergeți - este ușor de făcut cu un cmdlet Eliminare-ADUser. Nu vreau să-l elimin pe Jack Frost, dar dacă aș vrea, aș folosi acest cod:

PS C:\> Remove-ADUser jfrost -whatif Ce se întâmplă dacă: Efectuarea operației „Eliminare” pe țintă „CN=Jack Frost,OU=staff,OU=Testing,DC=GLOBOMANTICS,DC=local”.

Sau pot introduce mai mulți utilizatori și îi șterg cu o singură comandă simplă:

PS C:\> get-aduser -filter „activat -eq „fals”” -proprietate WhenChanged -SearchBase „OU=Angajați, DC=Globomantics,DC=Local” | unde ($_.WhenChanged -le (Get-Date).AddDays(-180)) | Remove-ADuser -whatif

Această comandă va găsi și elimina toate conturile dezactivate ale angajaților OU care nu s-au schimbat timp de 180 de zile sau mai mult.

Sarcina 5: Găsirea grupurilor goale

Managementul grupului este o sarcină nesfârșită și ingrată. Există multe modalități de a găsi grupuri goale. Unele expresii pot funcționa mai bine decât altele, în funcție de organizația dvs. Codul de mai jos va găsi toate grupurile din domeniu, inclusiv grupurile încorporate.

PS C:\> get-adgroup -filter * | unde (-Nu ($_ | get-adgroupmember)) | selectați numele

Dacă aveți grupuri cu sute de membri, atunci utilizarea acestei comenzi poate dura mult timp; Get-ADGroupMember verifică fiecare grupă. Dacă puteți limita sau personaliza, va fi mai bine.
Iată o altă abordare:

PS C:\> get-adgroup -filter „members -notlike „*” -AND GroupScope -eq „Universal”” -SearchBase „OU=Groups,OU=Employees,DC=Globomantics, DC=local” | Selectați Nume, Grup*

Această comandă găsește toate grupurile Universal care nu au apartenență la Grupuri OU și tipărește unele dintre proprietăți. Rezultatul este prezentat în Figura 3.


Orez. 3. Căutați și filtrați grupurile universale

Sarcina 6: Adăugarea utilizatorilor la un grup

Să adăugăm Jack Frost la grupul IT din Chicago:

PS C:\> add-adgroupmember "chicago IT" -Membri jfrost

Da, atât de simplu. De asemenea, puteți adăuga cu ușurință sute de utilizatori în grupuri, deși este puțin incomod din punctul meu de vedere:

PS C:\> Add-ADGroupMember „Angajații Chicago” -membru (get-aduser -filter „oraș -eq „Chicago””)

Am folosit expresia pentru a găsi toți utilizatorii care au o proprietate City în Chicago. Codul din paranteze este executat și obiectele rezultate sunt trecute la parametrul –Member. Fiecare obiect utilizator este adăugat la grupul Chicago Employees. Nu contează dacă avem de-a face cu 5 sau 5000 de utilizatori, este nevoie de doar câteva secunde pentru a actualiza apartenența la grup. Această expresie poate fi scrisă și folosind Pentru fiecare-obiect care ar putea fi mai convenabil:

PS C:\> Get-ADUser -filter „oraș -eq „Chicago”” | foreach(Add-ADGroupMember „Chicago Employees” -Member $_)

Sarcina 7: Afișarea unei liste de membri ai grupului

Poate doriți să știți cine face parte dintr-un anumit grup. De exemplu, ar trebui să verificați periodic cine se află în grupul Administratori de domeniu:

PS C:\> Get-ADGroupMember „Administratori de domeniu”

Figura 4 arată rezultatul.


Orez. 4. Membrii grupului Domain Admins

Cmdletul produce un obiect AD pentru fiecare membru al grupului. Dar grupurile imbricate? Grupul meu Chicago All Users este o colecție de grupuri imbricate. Pentru a obține o listă cu toate conturile, trebuie doar să folosesc parametrul – Recursiv.

PS C:\> Get-ADGroupMember „Chicago toți utilizatorii” -Recursiv | Selectați DistinguishedName

Dacă doriți să mergeți în altă direcție - pentru a afla ce grupuri aparține utilizatorul - utilizați proprietatea utilizator Membru al:

PS C:\> get-aduser jfrost -property Memberof | Selectați -ExpandProperty memberOf CN=NewTest,OU=Groups,OU=Angajații, DC=GLOBOMANTICS,DC=local CN=Chicago Test,OU=Groups,OU=Angajații, DC=GLOBOMANTICS,DC=local CN=Chicago IT,OU= Grupuri, OU=Angajați, DC=GLOBOMANTICS,DC=local CN=Chicago Sales Users,OU=Groups,OU=Angajații, DC=GLOBOMANTICS,DC=local

Am folosit parametrul -ExpandProperty pentru a afișa numele Membru al ca şirurile.

Sarcina 8: Găsiți conturi de computer învechite

Deseori mi se pune această întrebare: „Cum găsesc conturi de computer învechite?”. Și mereu răspund: „Ce este învechit pentru tine?” Companiile variază în ceea ce privește definiția când un cont de computer (sau un cont de utilizator, indiferent) este învechit și nu mai poate fi utilizat. În ceea ce mă privește, sunt atent la acele conturi ale căror parole nu au fost modificate pentru o anumită perioadă de timp. Această perioadă pentru mine este de 90 de zile - dacă computerul nu a schimbat parola împreună cu domeniul în această perioadă, cel mai probabil este offline și depășit. Cmdlet folosit Get-ADComputer:

PS C:\> get-adcomputer -filter "Passwordlastset -lt "1/1/2012"" -properties *| Selectați numele, ultimul set de parolă

Filtrul funcționează excelent cu o valoare grea, dar acest cod va fi actualizat pentru toate conturile de computer care nu și-au schimbat parolele de la 1 ianuarie 2012. Rezultatele sunt prezentate în Figura 5.


Orez. 5. Găsiți conturi de computer învechite

Ca alternativă, să presupunem că sunteți cel puțin la nivelul funcțional al domeniului Windows 2003. Filtrați după proprietate LastLogontimeStamp. Această valoare este numărul de intervale de 100 de nanosecunde de la 1 ianuarie 1601 și este stocată în GMT, așa că lucrul cu această valoare este puțin complicat:

PS C:\> get-adcomputer -filter „LastlogonTimestamp -gt 0” -proprietăți * | selectați numele,lastlogontimestamp, @(Name="LastLogon";Expression=(::FromFileTime ($_.Lastlogontimestamp))),passwordlastset | SortLastLogonTimeStamp


Orez. 6. Convertiți valoarea LastLogonTimeStamp în formatul familiar

Pentru a crea un filtru, trebuie să convertesc o dată, cum ar fi 1 ianuarie 2012, în formatul corect. Conversia se face în FileTime:

PS C:\> $cutoff=(Get-Date "1/1/2012").ToFileTime() PS C:\> $cutoff 129698676000000000

Acum pot folosi această variabilă în filtru pentru Get-ADComputer:

PS C:\> Get-ADComputer -Filter "(lastlogontimestamp -lt $cutoff) -sau (lastlogontimestamp -notlike "*")" -proprietate * | Selectați Nume, LastlogonTimestamp, PasswordLastSet

Codul de mai sus găsește aceleași computere care au fost prezentate în Figura 5.

Sarcina 9: Dezactivați contul de computer

Poate doriți să le dezactivați atunci când găsiți conturi inactive sau învechite. Pentru a face acest lucru este destul de simplu. Vom folosi același cmdlet pe care l-am folosit cu conturile de utilizator. Îl poți rafina folosind samAccountname cont.

PS C:\> Disable-ADAccount -Identity "chi-srv01$" -whatif What if: Efectuarea operației "Set" pe țintă "CN=CHI-SRV01, CN=Computers,DC=GLOBOMANTICS,DC=local".

Sau folosind o expresie pipeline:

PS C:\> get-adcomputer "chi-srv01" | Dezactivați-ADAcont

De asemenea, pot folosi codul meu pentru a găsi conturi învechite și pentru a le dezactiva pe toate:

PS C:\> get-adcomputer -filter "Passwordlastset -lt "1/1/2012"" -properties *| Dezactivați-ADAcont

Sarcina 10: Găsiți computere după tip

De asemenea, sunt adesea întrebat cum să găsesc conturi de computer după tip, cum ar fi servere sau stații de lucru. Acest lucru necesită puțină creativitate din partea dvs. Nu există nimic în AD care să deosebească serverul de client, cu excepția poate sistemul de operare. Dacă computerul dvs. rulează Windows Server 2008, va trebui să faceți câțiva pași suplimentari.
Mai întâi trebuie să obțineți o listă de sisteme de operare, apoi filtrăm conturile după sistemul de operare disponibil.

PS C:\> Get-ADComputer -Filter * -Properties OperatingSystem | Selectați OperatingSystem -unique | Sortare sistem de operare

Rezultatele sunt prezentate în Figura 7.


Orez. 7. Extrageți lista OS

Vreau să găsesc toate computerele care rulează un sistem de operare server:

PS C:\> Get-ADComputer -Filtru „Sistem de operare -cum ar fi „*Server*”” -proprietăți OperatingSystem,OperatingSystem ServicePack | Selectați Nume, Op* | lista de format

Rezultatele sunt prezentate în Figura 8.

Ca și în cazul altor cmdlet-uri AD Get, puteți personaliza parametrii de căutare și puteți limita interogarea la anumite OU, dacă este necesar. Toate expresiile pe care le-am arătat pot fi integrate în expresii mari PowerShell. De exemplu, puteți sorta, grupa, aplica filtre, exporta în CSV sau puteți crea și trimite prin e-mail rapoarte HTML - totul din PowerShell! În acest caz, nu trebuie să scrieți un singur script.
Iată un bonus pentru tine: un raport privind vârsta parolei utilizatorului salvat într-un fișier HTML:

PS C:\> Get-ADUser -Filter „Activat -eq „True” -ȘI PasswordNeverExpires -eq „False”” -Properties PasswordLastSet,PasswordNeverExpires,PasswordExpired | Selectați DistinguishedName,Name,pass*,@(Name="PasswordAge"; Expression=((Get-Date)-$_.PasswordLastSet)) |sort PasswordAge -Descending | ConvertTo-Html -Title "(!LANG:Raport privind vârsta parolei" | Out-File c:\Work\pwage.htm !}

Deși această expresie poate părea puțin intimidantă, cu cunoștințe minime despre PowerShell, este ușor de utilizat. Și există doar ultimul sfat: cum să definiți o proprietate personalizată numită PasswordAge. Valoarea este decalajul dintre astăzi și proprietatea PasswordLastSet. Apoi sortez rezultatele pentru noua mea proprietate. Figura 9 arată rezultatul pentru micul meu domeniu de testare.

Actualizați:
Postarea conține o traducere a articolului de pe portal

0

Am următorul script de lucru care verifică dacă o listă mare de utilizatori dintr-un fișier CSV este membru al unui grup 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 să o fac manual schimbând valoarea din $group și numele fișierului de export și rulând din nou scriptul de 80 de ori, dar ar trebui să fie rapid cu PS să o facă

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 copia cu apartenența la grup a 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 determina 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 # Elimina 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 în ADSI dacă nu ați avea instalat RSAT pe orice mașină pe care rulați acest lucru. Dacă aveți nevoie, spuneți-mă și voi face câteva modificări rapide.

Bună ziua, dragi cititori și abonați, continuăm să explorăm cu voi posibilitățile Powershell și Active Directory. După cum vă amintiți, ea are toate conturile de utilizator și computer în baza de date NTDS.dit, totul este grozav și centralizat. Când o companie are mai mult de un administrator de sistem, se poate dovedi că acumulează gunoi și acreditări suplimentare. Cu toții suntem oameni și putem uita unele lucruri, iar în unele momente putem fi distrași, ceea ce va duce și la uitarea de informații importante. Și ajungem la concluzia că utilizatorii inactivi (demisi sau uitați) se acumulează în Directorul Actvie, în orice caz, un administrator de sistem bun ar trebui să-i identifice, să-i dezactiveze și apoi să-i ștergă după bunul plac, ceea ce vom face.

Prin ADUC snap

Data trecută, v-am dat deja un exemplu de utilizare a snap-in-ului Active Directory Users and Computers, prin care am căutat computere lipsă în rețeaua locală care nu mai apăreau de o lună. Acum să facem același lucru cu conturile de utilizator. Am AD pe Windows Server 2012 R2, deschideți ADUC, pentru a face acest lucru, apăsați WIN + R și introduceți dsa.msc.

În formularul de solicitare care se deschide, introduceți:

  • Nume interogare > al meu este utilizatori pierduti
  • Descriere dacă este necesar
  • Solicitați rădăcină > aici puteți lăsa întregul domeniu, sau specificați pe OU dorit

Apoi faceți clic pe butonul de solicitare.

În fila utilizatori, vedem elementul „Număr de zile de la ultima conectare”, de exemplu, am setat 60 de zile.

Ca rezultat, veți obține lista de conturi de angajați inactivi de care aveți nevoie.

Prin powershell snap

La fel se poate face prin Powershell. Voi da imediat codul, a cărui sarcină este să caut utilizatori inactivi, pentru aceasta am ales o perioadă de 45 de zile, dezactivând datele utilizatorului și trecând la o unitate organizatorică special desemnată pentru aceasta.

$date_with_offset=(Get-Date).AddDays(-45)
$users = Get-ADUser -Properties LastLogonDate -Filter (LastLogonDate -lt $date_with_offset ) | SortLastLogonDate
foreach ($user în $users) (set-aduser $user -enabled $false; move-adobject -identity $user -targetpath "ou=Renunțat,ou=Msk L.Users,ou=Locație,dc=msk,dc= contoso,dc=com")
Get-ADUser -Properties LastLogonDate -Filter (LastLogonDate -lt $date_with_offset ) | SortLastLogonDate | Nume FT, LastLogonDate -AutoSize | Out-Fișier c:\Script\users.txt

  • În prima linie, declarați o variabilă în care setați perioada de căutare
  • Creați o variabilă și faceți o selecție bazată pe ultima oră de conectare
  • Mutarea utilizatorilor

  • Efectuarea unui raport la un dosar

Lucruri mai utile pentru a lucra cu utilizatorul. Înainte de a utiliza comenzile de mai jos, trebuie să încărcați modulul Active Directory, prin intermediul comenzii

Get-Help Get-ADUser

În acest articol, vom arunca o privire asupra capacității PowerShell de a gestiona grupuri de domenii Active Directory. Ne vom uita la modul de a crea un grup nou în AD, de a adăuga (sau de a elimina) utilizatori la acesta, de a enumera utilizatorii grupului și de alte câteva acțiuni utile ale grupului de domenii care sunt extrem de utile în administrarea de zi cu zi. Următoarele cmdleturi de bază sunt disponibile pentru gestionarea grupurilor AD în modulul Active Directory PowerShell:

Pentru a utiliza aceste cmdleturi în sesiunea dumneavoastră PowerShell, trebuie încărcat un modul special pentru interacțiunea cu 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 implicit. Pe computerele client, acesta poate fi instalat și activat ca una dintre componentele RSAT. Puteți verifica dacă modulul este încărcat astfel:

Get-Module -List disponibil

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

Import-Module director activ

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

Get-Command -Module ActiveDirectory

Există un total de 147 de cmdlet-uri 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

Cu un atribut Descriere puteți seta o descriere pentru grup și cu numele afisat schimbați numele afișat.

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

  • 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 care urmează să fie adăugați în grup este destul de mare, puteți salva lista de conturi într-un fișier CSV, apoi importați fișierul și adăugați fiecare utilizator în grup.

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

Import-CSV .\users.csv -Utilizatori de antet | Pentru fiecare obiect (Add-AdGroupMember -Identity 'TestADGroup' -members $_.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 următoarea comandă:

Get-ADGroupMember „GroupA” | Get-ADUser | Pentru fiecare obiect (Add-ADGroupMember -Identitate „Grupul-B” -Membri $_)

În cazul în care 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 | Pentru fiecare obiect (Add-ADGroupMember -Identitate „GroupB” - Membri $_)

Remove-ADGroupMember - Eliminați utilizatori dintr-un grup

Pentru a elimina utilizatori dintr-un grup AD, 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 după listă dintr-un fișier CSV, utilizați următoarea comandă:

Import-CSV .\users.csv -Utilizatori de antet | ForEach-Object(Eliminați-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 un grup. Get-ADGroup:

Get-ADGroup „TestADGroup”

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

Get-ADGroup "TestADGroup" -properties *

După cum puteți vedea, acum sunt afișate atribute precum timpul de creare și modificare a grupului, descrierea etc.

Puteți utiliza cmdletul Get-ADGroup pentru a găsi toate grupurile de interes pe baza unui model specific. De exemplu, doriți să găsiți toate grupurile AD care conțin expresia administratori :

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

Get-ADGroupMember - listează membrii 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 sunt incluse alte grupuri de domenii, pentru a afișa o listă completă de membri, inclusiv toate grupurile imbricate, utilizați opțiunea Recursiv.

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

Pentru a exporta o listă de conturi care aparțin unui anumit grup într-un fișier CSV (pentru 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 -Identitate „administratori de domeniu”).Număr

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

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

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

Top articole similare