Cum se configurează smartphone-uri și PC-uri. Portal informativ
  • Acasă
  • știri
  • Powershell obține utilizatori din reclame. Excel în loc de PowerShell: interogări către AD și rapoarte de sistem „pe genunchi”

Powershell obține utilizatori din reclame. Excel în loc de PowerShell: interogări către AD și rapoarte de sistem „pe genunchi”

În comentariile la articolul precedent, ei și-au amintit de 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 obișnuite. 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 lăsați-vă distras de la scenarii.


Desigur, puteți obține datele ca în exemplele de mai jos 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 pe web și uita de actualizarea lor.

Pentru a lucra cu date, voi folosi motorul Power Query. Pentru Office 2010 și 2013, va trebui să instalați plug-in-ul, acest modul este deja încorporat în Microsoft Office 2016. Din păcate, ediția standard nu este suficientă pentru noi, avem nevoie de Professional.


Mecanismul în sine este conceput pentru a primi și procesa date dintr-o varietate de surse - de la vechiul ODBC ș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: vedeți când utilizatorii noștri s-au conectat

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



Specificați sursa de date.


Va trebui să selectați un nume de domeniu, să specificați datele necesare pentru conectare. În continuare, alegem tipul de obiecte, în acest exemplu - utilizator. În partea dreaptă a ferestrei de previzualizare, interogarea rulează deja, afișând o previzualizare a datelor.



Pregătim cererea, admirăm previzualizarea.


Ar trebui să pregătiți interogarea în avans făcând clic pe butonul „editați” și selectând coloanele dorite. De fapt, aceste coloane sunt clase, fiecare dintre ele conține un set de atribute specifice unui obiect Active Directory, cu excepția coloanei principale. numele afisat, care este în sine un atribut. Voi rămâne cu cursurile utilizator, persoană, topȘi securitatePrincipal. Acum trebuie să selectați atributele necesare din fiecare clasă folosind „extensia” - o pictogramă cu două săgeți la antetul coloanei:

  • Clasă utilizator extinde prin alegere lastLogonTimestampȘi userAccountControl;
  • în persoană alege număr de telefon;
  • în topcând este creat;
  • si in securitatePrincipalSamAccountName.


Extinderea interogării.


Acum haideți să configuram filtrul: în special, pentru a nu obține conturi blocate, aveți nevoie ca atributul userAccountControl să aibă o valoare de 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 determină incorect formatul datelor, în special valorile atributului lastLogonTimestamp. Dacă o astfel de nenorocire s-a întâmplat brusc, în fila „Convertire” puteți seta formatul corect.

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


Rezultatul a fost o farfurie, care rămâne destul de puțin de adus în minte. De exemplu, redenumiți coloanele în ceva care poate fi citit. Și configurați actualizări automate de date.


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



Setări de actualizare a datelor.


După finalizarea instalării actualizării, puteți da tabelul în siguranță personalului departamentului de personal sau serviciului de securitate - anunțați-i cine și când a intrat în sistem.


Solicitați codul în limba „M” 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 securityPrincipal" = Table.ExpandRecordColumn(#"Coloane la distanță", "securityPrincipal", ("sAMAccountName"), ("sAMAccountName"), #"Expanded top" = Table.ExpandRecordColumn(#"Expanded securityPrincipal ", "sus ", ("whenCreated"), ("whenCreated")), #"Expanded person" = Table.ExpandRecordColumn(#"Expanded top", "person", ("telephoneNumber"), ("telephoneNumber ")), #" Element de utilizator extins" = Tabel. ExpandRecordColumn(#"Element de persoană extins", "utilizator", ("lastLogonTimestamp", "userAccountControl" ), ("lastLogonTimestamp", "userAccountControl")), #"Applied filter rows" = Table.SelectRows(#"Expanded user element", each ( = 512 or = 66048)), #"Changed type" = Table. TransformColumnTypes (#"Rânduri filtrate",(("lastLogonTimestamp", tip datetime))), #"Removed columns1" = Table.RemoveColumns(#"Changed type", ("userAccountControl")) în #"Removed columns1"

Creăm o agendă de adrese sau ce să facem atunci când portalul corporativ nu este prieten cu AD

O altă opțiune pentru utilizarea Excel împreună cu Active Directory este formarea unei agende de adrese pe baza datelor AD. Este clar că agenda va fi actualizată doar dacă domeniul este în regulă.


Creați o cerere pentru un obiect utilizator, extinde clasa utilizatorîn Poștă, și clasa persoanăîn număr de telefon. Ștergeți toate coloanele, cu excepția distinsName— structura domeniului repetă structura întreprinderii; prin urmare, denumirile Unități organizaționale potriviți numele departamentelor. În mod similar, grupurile de securitate pot fi folosite ca bază pentru numele OU.


Acum de la linie CN=Nume de utilizator, OU=Departament de contabilitate, OU=Departamente, 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.



Extragem textul.


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



Introduceți separatori.


Acum, folosind filtrul, puteți tăia inutil ou precum utilizatorii blocați și Incorporat, configurați sortarea și încărcați datele în tabel.



Vedere a mesei finale.

Raport rapid asupra compoziției posturilor de lucru, fără introducerea de agenți și alte preparate

Acum să încercăm să creăm un tabel util obținând date pe computere. Să facem un raport asupra sistemelor de operare utilizate de companie: pentru aceasta vom crea o solicitare, dar în navigator de data aceasta vom selecta calculator.



Facem o cerere pe obiectul computer.


Părăsiți clasele coloanelor calculatorȘi topși extinde-le:

  • Clasă calculator extinde prin alegere cn, sistem de operare, Operating SystemServicePackȘi OperatingSystemVersion;
  • în clasă top alege când este creat.


Cerere extinsă.


Dacă doriți, puteți face un raport numai pe sistemele de operare server. De exemplu, aplicați un filtru pe atributul operatingSystem sau operatingSystemVersion. Nu voi face asta, 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 rămâne să eliminați coloana de nume afișat ca fiind inutilă și să încărcați rezultatul. Datele sunt gata. Acum puteți lucra cu ei ca la o masă obișnuită. Pentru început, vom face un tabel pivot în fila „Insert” - „Pivot Table”. Suntem de acord cu alegerea sursei de date și stabilim câmpurile acesteia.



Setările câmpului tabelului pivot.


Acum rămâne să personalizați designul pentru a gusta și admira rezultatul:



Tabel pivot pentru computere în AD.


Opțional, puteți adăuga un grafic rezumat, tot în fila „Inserare”. În „Categorii” (sau în „Rânduri”, după gust) adăugați sistem de operare, în date cn. În fila „Designer”, poți alege tipul de diagramă care îți place, eu am preferat diagrama circulară.



Graficul proporțiilor.


Acum puteți vedea 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.


Cereți codul 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 remote columns" = Table.SelectColumns(#"Remote columns", ("displayName", "computer", "top")), #"Expanded element computer" = Table.ExpandRecordColumn(#"Alte coloane la distanță", "computer", ("cn", "operatingSystem", "operatingSystemServicePack", "operatingSystemVersion"), ("cn", "operatingSystem", "operatingSystemServicePack", " operatingSystemVersion"), #"Expanded top" = Table.ExpandRecordColumn(#"Expanded computer", "expanded", ("whenCreated"), ("whenCreated")), #"Extracted year" = Table.TransformColumns( #"Expanded top",(("whenCreated", Data.Year))), #"Removed columns1" = Table.RemoveColumns(#"Extracted year",("displayName")) in #"Removed columns1"

Adaugă etichete

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 să obțineți o descărcare a tuturor utilizatorilor de domeniu. Pe baza datelor obținute, se formează în continuare proceduri de testare, de exemplu, studierea listei de administratori sau identificarea utilizatorilor cu o parolă expirată. Cel mai eficient mod de a genera o astfel de descărcare este utilizarea interfeței standard PowerShell , exemple din care vom lua în considerare în acest articol.

1. Încărcare rapidă prin script PowerShell

Mai jos este un script PowerShell, ca fiind una dintre cele mai simple și rapide modalități 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 = Obiect nou System.DirectoryServices.DirectorySearcher $objSearcher.SearchRoot = "LDAP://ou=Utilizatori,ou=Departmets,dc=test,dc=en" $objSearcher.Filter = "(&(objectCategory=persoana) (!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 @( Titlu = $user.description Department = $user.department Login = $user.userprincipalname Telefon = $user.telephonenumber Room = $user.physicaldeliveryofficename 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ă. ca în acest exemplu aceștia sunt parametrii Utilizatori în divizie Departamente în domeniu Test.ru. Și, de asemenea, specificați calea către locația în care este salvat fișierul. list_domain_users.csv

După descărcare, dacă este deschis imediat list_domain_users.csv , va arăta într-o formă imposibil de citit, cu toate acestea, folosind instrumente standard, îl putem aduce cu ușurință în formatul de care avem nevoie. Deschidere î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!

!Notă 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ă recurgă la metodele descrise mai jos.

2. Cmdlet PowerShell avansat pentru a obține descărcări de utilizatori 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. 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 director activ

La listează toate conturile de domeniu și rulați comanda:

Get-ADUser -filter *

La afișează 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 și ora la care expiră schimbarea parolei . 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 ulterior va fi exportat convenabil în Excel (în plus, folosind sort-object, vom sorta tabelul după coloana PasswordLastSet și, de asemenea, vom adăuga 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:tempuser-password-expires-2015.csv

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 OU 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

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 de la $group și export numele fișierului ș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.

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ă! Astăzi, folosind exemple simple, vom arăta caracteristicile PowerShell care pot fi folosite 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 și așa mai departe. Alegerea instrumentului s-a bazat de obicei pe sarcina la îndemână și pe capacitatea de programare a administratorului.

PowerShell 2.0 a introdus un 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 din directorul AD. Pentru a obține informații despre utilizatorii domeniului Active Directory și proprietățile acestora, utilizați cmdletul Get-ADUser. Puteți utiliza cmdletul Get-ADUser pentru a obține valoarea oricărui atribut al unui cont de utilizator existent î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, vom arăta cum să utilizați cmdletul Get-ADUser PowerShell pentru a obține informații despre când parola unui utilizator a fost modificată ultima dată și când expiră.

Lansăm fereastra Powershll cu drepturi de administrator și importăm modulul Active Directory cu comanda:

Import-Module director activ

Sfat. În Windows Server 2012 și versiuni ulterioare, acest pas poate fi omis, deoarece modulul Active Directory PowerShell este activat în mod implicit.

În sistemul de operare client (în același Windows 10), 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 Modul Active Directory pentru Windows PowerShell(Instrumente de administrare la distanță a serverului -> Instrumente de administrare a rolurilor -> Instrumente AD DS și AD LDS -> Instrumente AD DS).

O listă completă a tuturor argumentelor pentru cmdletul Get-ADUser poate fi obținută astfel:

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 ușor 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 o listă completă a atributelor utilizatorului AD și a valorilor 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 la care a fost schimbată parola și ora la care expiră. 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 baza de căutare:

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

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:\temp\users.txt

Sau în CSV, care ulterior va fi exportat convenabil în Excel (opțional folosind sortare-obiect sortați tabelul după coloana PasswordLastSet și adăugați, 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 după un anumit atribut, utilizați parametrul –Filter. Ca argumente pentru acest parametru, puteți specifica valoarea anumitor atribute ale utilizatorilor Active Directory, ca urmare, cmdletul Get-ADUser va fi aplicat utilizatorilor care corespund criteriilor de filtru.

Listarea 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 parola expirată:

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,GivenName,mail | 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 companiei 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,GivenName,mail | 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 este membru contul de utilizator

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

Top articole similare