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. Atunci când o companie are mai mult de un administrator de sistem, poate rezulta o situație ca gunoiul și acreditările inutile să se acumuleze în ea. 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 snap-in-ul ADUC
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 asta apăsați WIN + R și introduceți dsa.msc.
În formularul de cerere care se deschide, specificați:
- Nume cerere> Am pierdut utilizatori
- Descriere dacă este necesar
- Solicitați rădăcină> aici puteți lăsa întregul domeniu sau îl puteți specifica pe OU dorit
Apoi apăsăm 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 intermediul snap-in-ului Powershell
La fel se poate face prin Powershell. Imediat voi da un cod a cărui sarcină este să caute utilizatori inactivi, pentru asta am ales o perioadă de 45 de zile, deconectând datele utilizatorului și trecând la o OU special desemnată.
$ date_with_offset = (Get-Date) .AddDays (-45)
$ utilizatori = Get-ADUser -Properties LastLogonDate -Filter (LastLogonDate -lt $ date_with_offset) | Sortați LastLogonDate
foreach ($ utilizator în $ utilizatori) (set-aduser $ user -enabled $ false; move-adobject -identity $ user -targetpath "ou = Demis, ou = Msk L. utilizatori, ou = Locație, dc = msk, dc = contoso, dc = com ")
Get-ADUser -Properties LastLogonDate -Filter (LastLogonDate -lt $ date_with_offset) | Sortează LastLogonDate | Nume FT, LastLogonDate -AutoSize | Out-Fișier c: \ Script \ users.txt
- În prima linie, declarați o variabilă în care setați termenul de căutare
- Creați o variabilă și un eșantion până la ultima oră de conectare
- Mutarea utilizatorilor
- Efectuarea unui raport la un dosar
Lucruri mai utile pentru lucrul 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
Scripturi pentru a descărca toți utilizatorii din MS Active Directory (ITGC)
Ivan PiskunovUna dintre procedurile standard de audit ITGC pentru catalog Director activ este să obțineți descărcarea tuturor utilizatorilor domeniului. Pe baza datelor primite se formează apoi proceduri de testare, de exemplu, studierea listei de administratori sau identificarea utilizatorilor cu o parolă expirată. Cel mai eficient mod de a forma o astfel de descărcare ar fi folosirea interfeței standard PowerShell , exemple din care vom lua în considerare în acest articol
1. Încărcare rapidă folosind scriptul PowerShellMai jos este un script PowerShell ca una dintre cele mai simple și rapide moduri de a obține o listă a tuturor utilizatorilor unui domeniu AD în format CSV, care poate fi deschisă fără probleme de același Excel.
$ objSearcher = New-Object System.DirectoryServices.DirectorySearcher $ objSearcher.SearchRoot = "LDAP: // ou = Utilizatori, ou = Departamente, dc = test, dc = ru" $ objSearcher.Filter = "(& (objectCategory = persoană) (! userAccountControl: 1.2.840.113556.1.4.803: = 2)) "$ utilizatori = $ objSearcher.FindAll () # Număr de conturi $ utilizatori.Număr $ utilizatori | Pentru fiecare obiect ($ user = $ _. Proprietăți New-Object PsObject -Property @ (Titlu = $ 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_domen_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ă. ca în acest exemplu aceștia sunt parametri Utilizatori în unitate Departamente în domeniu Test.ru. Și, de asemenea, specificați calea către locația în care este salvat fișierul list_domen_users.csv
După descărcare, dacă deschideți imediat list_domen_users.csv , va arăta într-o formă de necitit, totuși, prin mijloace standard, îl putem aduce cu ușurință în formatul de care avem nevoie. Deschidere în Excel list_domen_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!
! Ar trebui notat că acest script nu va afișa mai mult de 1000 de utilizatori. Este destul de potrivit pentru o companie mică, dar cei care au un număr mare de utilizatori în domeniu ar trebui să folosească metodele descrise mai jos.
2. Cmdlet PowerShell avansat pentru descărcarea utilizatorilor Active Directory
Modulul Active Directory pentru instrumentul Windows PowerShell (introdus în Windows Server 2008 R2 și mai târziu) vă permite să generați cmdlet-uri care efectuează diverse manipulări cu obiectele directorului AD. Pentru a obține informații despre utilizatori și proprietățile acestora, utilizați cmdletul 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 a, hai să executăm comanda:
Get-ADUser -filter *
La afișați informații complete despre toate atributele disponibile utilizator tuser, rulați comanda
Get-ADUser -identity tuser -properties *
De exemplu, ne interesează informații despre data la care a fost schimbată parola și ora la care expiră ... Rezultatul executării comenzii poate fi exportat într-un fișier text:
Get-ADUser -filter * -properties PasswordExpired, PasswordLastSet, PasswordNeverExpires | ft Nume, PasswordExpired, PasswordLastSet, PasswordNeverExpires> C: tempusers.txt
Sau imediat încărcați în CSV , care în viitor va fi convenabil de exportat în Excel (în plus, folosind sort-obiectul, vom sorta tabelul după coloana PasswordLastSet și, de asemenea, vom adăuga condiția 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: tempuser-password-expires-2015.csv
În acest articol, vom arunca o privire asupra capabilităților PowerShell pentru gestionarea grupurilor de domenii Active Directory. Vom parcurge cum să creați un grup nou în AD, să adăugați utilizatori la acesta (sau să ștergeți), să enumerați utilizatorii grupului și alte câteva trucuri utile pentru grupuri de domenii, care sunt extrem de utile în administrarea de zi cu zi. Următoarele cmdleturi de bază sunt disponibile în modulul Active Directory PowerShell pentru a gestiona grupurile AD:
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 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 -Listavailable
După cum puteți vedea, modulul ActiveDirectory este încărcat. Dacă nu, importați-l cu comanda:
Import-Module activedirectory
O listă completă a comenzilor modulelor poate fi obținută după cum urmează:
Get-Command -Module ActiveDirectory
Există 147 de cmdlet-uri disponibile în modul, dintre care 11 pot lucra cu grupuri.
Get-Command -Module ActiveDirectory -Nume „* Grup *”
Iată o listă cu ele:
- Add-ADPrincipalGroupMembership
- Get-ADAccountAuthorizationGroup
- Get-ADGroup
- Get-ADGroupMember
- Get-ADPrincipalGroupMembership
- Nou-ADGroup
- Eliminați-ADGroup
- Eliminați-ADPrincipalGroupMembership
- Set-ADGroup
Creați un nou grup în containerul specificat (OU) Active Directory utilizând comanda Nou-ADGroup:
Nou-ADGroup "TestADGroup" -calea "OU = Grupuri, OU = Moscova, DC = corp, dc = winitpro, DC = ru" -GroupScope Global -PassThru –Verbose
Folosind atributul Descriere puteți seta o descriere a grupului și folosind Numele afisat schimbați numele afișat.
Parametrul GroupScope puteți seta 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 grupul 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 de adăugat la un 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, unul pe linie, numele coloanei este utilizatori)
Import-CSV.\ Users.csv -Header users | Pentru fiecare obiect (Add-AdGroupMember -Identitate „TestADGroup” -membri $ _. Utilizatori)
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 | 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 conform listei dintr-un fișier CSV, utilizați următoarea comandă:
Import-CSV.\ Users.csv -Header users | Pentru fiecare obiect (Remove-ADGroupMember -Identity ‘TestADGroup’ -membri $ _. Utilizatori)
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 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.
Folosind cmdletul Get-ADGroup, puteți găsi toate grupurile de care sunteți interesat după un anumit model. De exemplu, trebuie să găsiți toate grupurile AD care conțin expresia administratori :
Get-ADGroup -LDAPFilter „(nume = * admins *)” | Format-Tabel
Get-ADGroupMember - Listează utilizatorii unui grup AD
Afișează o listă de utilizatori dintr-un grup:
Get-ADGroupMember „TestADGroup”
Pentru a lăsa doar nume de utilizator în rezultate, rulați:
Get-ADGroupMember „TestADGroup” | ft nume
Dacă acest grup include alte grupuri în domeniu, pentru a afișa o listă completă de membri, inclusiv toate grupurile imbricate, utilizați parametrul Recursiv.
Get-ADGroupMember „server-admins „-recursive | ft name
Pentru a exporta lista de conturi aparținând unui anumit grup într-un fișier CSV (pentru utilizare ulterioară în Excel), rulați următoarea comandă:
Get-ADGroupMember „server-admins „-recursiv | ft samaccountname | Out-File c: \ ps \ admins.csv
Vom folosi cmdletul pentru a adăuga informații despre contul de utilizator AD într-un fișier text. 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” -recursiv | foreach (Get-ADUser $ _ -properties title, OfficePhone | Select-Object title, OfficePhone)
(Get-ADGroupMember -Identitate „administratori de domeniu”). Număr
S-a dovedit că avem 7 conturi de administrator în grupul „domain admins”.
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
Astăzi vom încerca să descarcăm lista tuturor utilizatorilor într-un fișier separat din Active Directory. PowerShell va fi principalul nostru asistent în această problemă. Acest lucru se datorează faptului că Microsoft a planificat inițial PowerShell Shell ca instrument principal pentru gestionarea componentelor serverului Windows. Și astăzi, când avem deja versiunea 2.0, în general, așa este.
Chiar și în trecutul recent, pentru a interacționa cumva cu AD, administratorii trebuiau să aibă la dispoziție fie utilitarul dsquery, fie tot felul de scripturi sau utilitare. Astăzi, începând cu Windows Server 2008 R2, putem lucra cu AD prin PowerShell. Odată cu apariția PowerShell 2.0, un modul special este utilizat pentru a interacționa cu Active Directory Modul Active Directory pentru Windows PowerShell care conține lista necesară de cmdleturi. Pentru sarcinile noastre, vom folosi comanda Get-ADUser.
Deci, în funcție de sistemul de operare pe care vom rula consola PowerShell, va trebui să facem „pași pregătitori”.
1) Dacă lucrăm de sub Windows Server până la versiunea 2012, apoi trebuie să executăm comanda:
- Import-Module activedirectory - comandă pentru importul unui modul în AD
Pentru versiunile de sistem de operare din 2012 și mai sus, acest modul este deja activat implicit.
2) Dacă lucrăm de pe orice client Windows, atunci trebuie instalat pachetul de administrare la distanță RSAT, cu componenta Active Directory Module pentru Windows PowerShell instalată.
Este de remarcat faptul că cmdletul Get-ADUser este recomandat să ruleze atunci când cantitatea de date încărcate este de până la 1000 de utilizatori.
Exportarea utilizatorilor AD utilizând PowerShell într-un fișier separat
Mai întâi, să apelăm ajutorul pentru comanda Get-ADUser. Ca urmare, veți primi toate comenzile necesare pentru administrare ulterioară.
- ajuta Get-ADUser - comanda pentru a apela ajutor
Pentru a obține o listă a tuturor utilizatorilor cu toate proprietățile într-o fereastră PowerShell, rulați următoarea comandă:
- Get-ADUser -filter * - exportul listei de utilizatori AD
Această descărcare nu este complet informativă și nu încadrează toate informațiile necesare din fereastră. Prin urmare, să încercăm să restrângem căutarea și să afișăm proprietățile unui anumit utilizator numit user1:
- Get-ADUser -identity user1 -properties * - exportul proprietăților unui anumit utilizator
Acum să încercăm să exportăm lista tuturor utilizatorilor cu proprietățile lor într-una externă. txt sau csv fişier:
- Get-ADUser -filter * -properties * | Export-csv -path c: \ users.csv -encoding Unicode - exportul utilizatorilor într-un fișier separat
Aș dori să atrag o atenție deosebită asupra cheii -codificarea Unicode... Este folosit pentru ca alfabetul chirilic rus, după exportul din AD, să poată fi afișat corect în fișierul încărcat. De exemplu, prin Microsoft Excel vom vedea semne de întrebare în loc de litere rusești.
Când vizualizați un fișier, datele sunt exportate pe o singură linie și astfel nu pot fi citite. Pentru a schimba acest lucru, trebuie să facem următoarele: