Kako postaviti pametne telefone i računala. Informativni portal
  • Dom
  • vijesti
  • Powershell dobiva korisnike iz oglasa. Excel umjesto PowerShell-a: AD upiti i izvješća sustava "na koljenu

Powershell dobiva korisnike iz oglasa. Excel umjesto PowerShell-a: AD upiti i izvješća sustava "na koljenu

U komentarima na prethodni članak sjetili su se računovodstva u Excelu umjesto u 1C. Pa, idemo provjeriti koliko poznajete Excel. Danas ću vam pokazati kako dobiti podatke iz Active Directoryja i raditi s njima bez makronaredbi i PowerShell-a - samo sa standardnim Office mehanizmima. Na primjer, možete jednostavno dobiti analitiku o korištenju operativnih sustava u svojoj organizaciji ako već nemate nešto poput Microsoft SCOM. Pa, ili se samo zagrijte i odvratite pozornost od scenarija.


Naravno, možete dobiti podatke kao u primjerima u nastavku u samo jednom retku u PowerShell-u. Ali, prvo, PowerShell je previše dosadan, a drugo, Excel može dinamički ažurirati podatke - rezultirajući dokumenti mogu se objaviti na mreži i zaboraviti na njihovo ažuriranje.

Za rad s podacima koristit ću Power Query motor. Za Office 2010 i 2013 morat ćete instalirati dodatak, u Microsoft Office 2016 ovaj modul je već ugrađen. Nažalost, standardno izdanje nam nije dovoljno, treba nam Professional.


Sam mehanizam je dizajniran za primanje i obradu podataka iz raznih izvora – od starih ODBC i tekstualnih datoteka, do Exchangea, Oraclea i Facebooka. Više detalja o mehanizmu i ugrađenom skriptnom jeziku "M" već je napisano na Habréu, ali ja ću analizirati nekoliko primjera korištenja Power Queryja za dohvaćanje podataka iz Active Directoryja.

Zagrijavanje: pogledajte kada su se naši korisnici prijavili

Sam upit prema bazi podataka domene kreira se na kartici "Podaci - Novi upit - Iz drugih izvora - Iz Active Directory".



Navodimo izvor podataka.


Morat ćete odabrati naziv domene, navesti potrebne podatke za povezivanje. Zatim odaberite vrstu objekata, u ovom primjeru - korisnik... Na desnoj strani prozora za pregled, upit je već pokrenut i prikazuje pregled podataka.



Pripremamo zahtjev, divimo se pregledu.


Upit treba pripremiti unaprijed klikom na gumb "promijeni" i odabirom potrebnih stupaca. Zapravo, ovi stupci su klase. Svaki od njih sadrži skup specifičnih atributa Active Directory objekta, pored glavnog stupca displayNamešto je samo po sebi atribut. Usredotočit ću se na nastavu korisnik, osoba, vrh i sigurnostPrincipal... Sada morate odabrati potrebne atribute iz svake klase koristeći "proširenje" - ikonu s dvije strelice u naslovu stupca:

  • Razred korisnik proširiti odabirom lastLogonTimestamp i Kontrola korisničkog računa;
  • v osoba birati telefonski broj;
  • v vrhkadaStvoreno;
  • i u sigurnostPrincipalSamAccountName.


Proširivanje zahtjeva.


Sada konfigurirajmo filtar: posebno, kako ne biste dobili blokirane račune, trebate da atribut userAccountControl ima vrijednost 512 ili 66048. Filtar može biti drugačiji u vašem okruženju. Više o atributu možete pročitati u Microsoftovoj dokumentaciji.



Primijenite filtar.


Ponekad Excel netočno određuje format podataka, posebno vrijednost atributa lastLogonTimestamp. Ako se iznenada dogodi takva nesreća, na kartici "Pretvori" možete postaviti ispravan format.

Sada treba ukloniti stupac userAccountControl - uopće nije potreban na zaslonu. I kliknite "Učitaj i zatvori".


Rezultat je tanjur, koji ostaje poprilično za pamćenje. Na primjer, preimenujte stupce u nešto čitljivo. I postavite automatsko ažuriranje podataka.


Automatsko ažuriranje prilikom otvaranja tablice ili po isteku vremena je konfigurirano na kartici "Podaci" u "Svojstvima".



Konfiguriranje osvježavanja podataka.


Nakon što je konfiguriranje ažuriranja dovršeno, možete sigurno dati tablicu kadrovskoj službi ili sigurnosnoj službi - obavijestite ih tko se i kada prijavio u sustav.


Zatražite kod na "M" jeziku ispod spojlera.

neka Source = ActiveDirectory.Domains ("domain.ru"), domain.ru = Source () [# "Kategorije objekata"], user1 = domain.ru (), # "Remote Columns" = Table.RemoveColumns (user1, ( "organizationalPerson", "shadowAccount", "posixAccount", "msExchOmaUser", "msExchBaseClass", "msExchIMRecipient", "msExchCertificateInformation", "msExchMultiMediaUser", "msExchMailStorage", "msExchMailStorage", "msExchMailStorage", "msExchCustomAtcordlumity" (msExchCustomAtcordlumedPrincid.) # "Izbrisani stupci", "securityPrincipal", ("sAMAccountName"), ("sAMAccountName")), # "Top Expanded" = Table.ExpandRecordColumn (# "SecurityPrincipal Expanded "," top ", (" whenCreated "), ( " whenCreated ")), #" Proširena osoba "= Table.ExpandRecordColumn (#" Expanded top "," person ", (" telephoneNumber "), (" telephoneNumber ")), #" Expand user "= Table.ExpandRecordColumn (# " Proširena osoba "," korisnik ", (" lastLogonTimestamp "," userAccountControl " ), ("lastLogonTimestamp", "userAccountControl")), # "Filtered Rows" = Table.SelectRows (# "Prošireni korisnik", svaki (= 512 ili = 66048)), # "Modified Type" = Tablica. TransformColumnTypes (# "Filtered Rows", (("lastLogonTimestamp", type datetime))), # "Deleted Columns1" = Table.RemoveColumns (# "Type promijenjen", ("userAccountControl")) u # "Deleted Columns1"

Napravite adresar ili što učiniti kada korporativni portal nije prijateljski s AD-om

Druga mogućnost korištenja Excela u kombinaciji s Active Directoryjem je formiranje adresara na temelju AD podataka. Jasno je da će adresar biti ažuran samo ako postoji red u domeni.


Kreirajmo zahtjev za objekt korisnik, proširi razred korisnik v pošta i razred osoba v telefonski broj... Izbrišite sve stupce osim razlikovno ime- struktura domene ponavlja strukturu poduzeća, dakle imena Organizacijske jedinice odgovaraju nazivima odjela. Slično, sigurnosne grupe mogu se koristiti kao osnova za nazive organizacijskih jedinica.


Sada iz reda CN = Korisničko ime, OU = Odjel računovodstva, OU = Odjel, DC = domena, DC = ru trebate izravno izdvojiti naziv odjela. Najlakši način za to je korištenje separatora na kartici Transform.



Izvlačimo tekst.


Kao separatore koristim OU = i , OU =... U principu, zarez je dovoljan, ali sam reosigurana.



Unesite separatore.


Sada koristeći filter, možete odrezati nepotrebno OU poput blokiranih korisnika i Ugrađeni, postavite sortiranje i učitajte podatke u tablicu.



Prikaz tablice sažetka.

Brzo izvješće o sastavu radnih stanica, bez uvođenja sredstava i druge pripreme

Pokušajmo sada stvoriti korisnu tablicu dobivanjem podataka na računalima. Napravimo izvješće o operativnim sustavima koje tvrtka koristi: za to ćemo kreirati zahtjev, ali u navigatoru ovaj put ćemo odabrati Računalo.



Dajemo zahtjev za računalom.


Napustimo razrede stupaca Računalo i vrh i proširi ih:

  • Razred Računalo proširiti odabirom cn, operacijski sustav, OperativniSystemServicePack i verzija operativnog sustava;
  • U klasi vrh birati kadaStvoreno.


Prošireni upit.


Po želji možete napraviti izvješće samo o operacijskim sustavima poslužitelja. Na primjer, filtrirajte prema operativnom sustavu ili verziji operativnog sustava. Neću to učiniti, ali ću ispraviti prikaz vremena stvaranja – zanima me samo godina. Da biste to učinili, na kartici "Pretvorba" odaberite željeni stupac i odaberite "Godina" u izborniku "Datum".



Izvlačimo godinu od trenutka kada je računalo ušlo u domenu.


Sada sve što ostaje je ukloniti stupac displayname kao nepotreban i učitati rezultat. Podaci su spremni. Sada s njima možete raditi kao s običnim stolom. Prvo napravimo stožernu tablicu na kartici "Umetanje" - "Zaokretna tablica". Složimo se s izborom izvora podataka i konfigurirajmo njegova polja.



Postavke polja zaokretne tablice.


Sada ostaje prilagoditi dizajn po svom ukusu i diviti se rezultatu:



Zbirna tablica za računala u AD.


Po želji možete dodati zaokretni grafikon, također na kartici "Umetanje". U "Kategorije" (ili "Redovi", po ukusu) dodajte operacijski sustav, u podatke - cn... Na kartici "Dizajn" možete odabrati vrstu grafikona po želji, meni je draži kružni.



Kružni graf.


Sada možete jasno vidjeti da je, unatoč ažuriranju koje je u tijeku, ukupan broj radnih stanica sa sustavom Windows XP i poslužitelja sa sustavom Windows 2003 prilično velik. I ima čemu težiti.


Zatražite kod ispod spojlera.

neka Source = ActiveDirectory.Domains ("domain.ru"), domain.ru = Source () [# "Kategorije objekata"], computer1 = domain.ru (), # "Remote Columns" = Table.RemoveColumns (computer1, ( "user", "organizationalPerson", "person")), # "Other deleted columns" = Table.SelectColumns (# "Izbrisani stupci", ("displayName", "computer", "top")), # "Proširena stavka računalo "= Table.ExpandRecordColumn (#" Ostali udaljeni stupci "," računalo ", (" cn "," OperationalSystem "," OperationalSystemServicePack "," OperationalSystemVersion "), (" cn "," OperationalSystem "," OperationalSystemServicePack "," OperationalSystemVersion ")), #" Expanded top "= Table.ExpandRecordColumn (#" Prošireno računalo "," top ", (" whenCreated "), (" whenCreated ")), #" Retrieved year "= Table.TransformColumns ( # " Prošireni vrh", (("whenCreated", Date.Year))), # "Deleted Columns1" = Table.RemoveColumns (# "Preuzeta godina", ("displayName")) u # "Deleted Columns1"

Dodaj oznake

Skripte za izbacivanje svih korisnika iz MS Active Directory (ITGC)

Ivan Piskunov

Jedan od standardnih revizijskih postupaka ITGC za katalog Aktivni direktorij je preuzeti preuzimanje svih korisnika domene. Na temelju primljenih podataka formiraju se postupci testiranja, na primjer, proučavanje popisa administratora ili identificiranje korisnika s isteklom zaporkom. Najučinkovitiji način za formiranje takvog rasterećenja bio bi korištenje standardnog sučelja PowerShell , primjere kojih ćemo razmotriti u ovom članku

1. Ekspresni prijenos pomoću PowerShell skripte

Ispod je PowerShell skripta kao jedan od najjednostavnijih i najbržih načina da dobijete popis svih korisnika AD domene u CSV formatu, koji se bez problema može otvoriti istim Excelom.

$ objSearcher = New-Object System.DirectoryServices.DirectorySearcher $ objSearcher.SearchRoot = "LDAP: // ou = Korisnici, ou = Odjeli, dc = test, dc = ru" $ objSearcher.Filter = "(& (objectCategory = osoba) (! userAccountControl: 1.2.840.113556.1.4.803: = 2)) "$ users = $ objSearcher.FindAll () # Broj računa $ users.Count $ korisnika | ForEach-Object ($ user = $ _. Svojstva New-Object PsObject -Property @ (Naslov = $ user.description Department = $ user.department Prijava = $ user.userprincipalname Telefon = $ user.telephonenumber Soba = $ user.physicaldeliveryofficename Puni naziv = $ korisnik.cn)) | Export-Csv -NoClobber -Encoding utf8 -Path C: list_domen_users.csv

Da bi skripta radila na vašem sustavu, morate je malo ispraviti, odnosno unijeti potrebne parametre, tj. kao u ovom primjeru to su parametri Korisnici u jedinici Odjeli u domeni Test.ru. Također navedite put do mjesta na kojem je datoteka spremljena list_domen_users.csv

Nakon istovara, ako odmah otvorite list_domen_users.csv , izgledat će u nečitljivom obliku, međutim, standardnim sredstvima možemo ga lako dovesti u format koji nam je potreban. Otvaranje u Excelu list_domen_users.csv , odaberite prvi stupac, zatim idite na karticu "Podaci" i kliknite "Tekst po stupcima". Odaberite "razdvojeno" i kliknite "Dalje". Spreman!

Treba napomenuti da ova skripta neće prikazati više od 1000 korisnika. To je sasvim prikladno za malu tvrtku, ali oni koji imaju ogroman broj korisnika u domeni trebali bi koristiti metode opisane u nastavku.

2. Napredni PowerShell cmdlet za dobivanje preuzetih korisnika Active Directoryja

Active Directory Module za Windows PowerShell alat (uveden u Windows Server 2008 R2 i novijim) omogućuje vam generiranje cmdlet-a koji izvode različite manipulacije s objektima AD direktorija. Da biste dobili informacije o korisnicima i njihovim svojstvima, koristite cmdlet Get-ADUser.

Početi pokrenite Powershell prozor s administratorskim pravima i uvozite Active Directory modul za daljnje radnje:
Aktivni direktorij modula za uvoz

Do popis svih računa domene a, izvršimo naredbu:

Get-ADUser -filter *

Do prikazati potpune informacije o svim dostupnim atributima korisnik tuser, pokrenite naredbu

Get-ADUser -identity tuser -properties *


Na primjer, zanimaju nas informacije o datum kada je lozinka promijenjena i vrijeme kada istekne ... Rezultat izvršenja naredbe može se izvesti u tekstualnu datoteku:

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

Ili odmah prenijeti u CSV , koji će u budućnosti biti prikladan za izvoz u Excel (dodatno, pomoću objekta sortiranja, sortirati ćemo tablicu po stupcu PasswordLastSet, a također ćemo dodati uvjet gdje - korisničko ime mora sadržavati niz "Dmitry")

Get-ADUser -filter * -properties PasswordExpired, PasswordLastSet, PasswordNeverExpires | gdje ($ _. ime -kao "* Dmitry *") | sort-objek PasswordLastSet | select-object Name, PasswordExpired, PasswordLastSet, PasswordNeverExpires | Export-csv -path c: tempuser-password-expires-2015.csv

Dobar dan, dragi čitatelji i pretplatnici, nastavljamo s vama istraživati ​​mogućnosti Powershella i Active Directoryja. Kao što se sjećate, ona ima sve korisničke i računalne račune u bazi podataka NTDS.dit, sve je super i centralizirano. Kada tvrtka ima više od jednog administratora sustava, može doći do situacije da se u njoj nakuplja smeće i nepotrebne vjerodajnice. Svi smo mi ljudi i neke stvari možemo zaboraviti, a u nekim trenucima možemo biti ometeni, što će također dovesti do zaboravljanja važnih informacija. I dolazimo do zaključka da se neaktivni korisnici (otpušteni ili zaboravljeni) gomilaju u Actvie imeniku, u svakom slučaju, dobar administrator sustava bi ih trebao identificirati, onemogućiti i potom obrisati po želji, što ćemo i učiniti.

Kroz ADUC utikač

Prošli put sam vam već dao primjer korištenja Active Directory Users and Computers snap-ina putem kojeg smo tražili nestala računala na lokalnoj mreži koja se nisu pojavila mjesec dana. Sada učinimo isto s korisničkim računima. Imam AD na Windows Server 2012 R2, otvorite ADUC, za to pritisnite WIN + R i unesite dsa.msc.

U obrascu zahtjeva koji se otvori navedite:

  • Ime zahtjeva> Izgubio sam korisnike
  • Opis ako je potrebno
  • Zahtjev root> ovdje možete ostaviti cijelu domenu, ili je navesti na željenom OU-u

Zatim pritisnemo gumb zahtjev.

Na kartici korisnika vidimo stavku "Broj dana od posljednje prijave", na primjer, postavio sam 60 dana.

Kao rezultat toga, dobit ćete popis neaktivnih računa zaposlenika koji su vam potrebni.

Kroz powershell uskok

Sve isto se može učiniti putem Powershell-a. Odmah ću dati kod čija je zadaća traženje neaktivnih korisnika, za to sam odabrao period od 45 dana, odspajanje korisničkih podataka i prelazak u posebno određen OU.

$ date_with_offset = (Get-Date) .AddDays (-45)
$ korisnici = Get-ADUser -Properties LastLogonDate -Filter (LastLogonDate -lt $date_with_offset) | Razvrstaj Datum posljednjeg prijavljivanja
foreach ($ korisnik u $ korisnika) (set-aduser $ korisnik - omogućeno $ false; move-adobject -identity $ korisnik -targetpath "ou = Otpušteno, ou = Msk L. korisnici, ou = Lokacija, dc = msk, dc = contoso, dc = com")
Get-ADUser -Properties LastLogonDate -Filter (LastLogonDate -lt $ date_with_offset) | Razvrstaj Datum posljednjeg prijavljivanja | FT Ime, LastLogonDate -AutoSize | Out-File c: \ Script \ users.txt

  • U prvom retku deklarirate varijablu u kojoj postavljate pojam za pretraživanje
  • Napravite varijablu i uzorak do vremena posljednje prijave
  • Premještanje korisnika

  • Izrada izvješća u datoteci

Više korisnih stvari za rad s korisnikom. Prije korištenja naredbi u nastavku, morate učitati modul Active Directory putem naredbe

Get-Help Get-ADUser

0

Imam sljedeću radnu skriptu koja provjerava je li veliki popis korisnika u CSV datoteci član AD grupe i zapisuje rezultate u results.csv.

Nisam siguran kako pretvoriti skriptu da bih mogao promijeniti $ group = "InfraLite" u $ group = DC. \ List_Of_AD_Groups.CSV.

Dakle, skripta ne vraća samo podudaranja za jednu AD grupu, već vraća podudaranja za 80 AD grupa sadržanih u List_of_AD_groups.csv. Pisanje DA/NE za svaku grupu oglasa u novom CSV stupcu (ili, ako to nije moguće, kreiranje zasebne CSV datoteke za svaku grupu s rezultatima također će.

Mogao sam to učiniti ručno promjenom vrijednosti iz grupe $ i naziva datoteke za izvoz i ponovnim pokretanjem skripte 80 puta, ali morao sam biti brz s PS-om da bih to učinio

npr. rezultati.csv?:

NAZIV AD_GROUP1 AD_GROUP2 AD_GROUP80 itd itd. korisnik1 da ne da korisnik2 ne ne da korisnik3 ne da ne echo "UserName`InfraLite" >> results.csv $ users = GC. \ user_list.csv $ group = "InfraLite" $ members = Get-ADGroupMember -Identity $ group -Rekurzivno | Odaberite -ExpandProperty SAMAccountName foreach ($ korisnik u $ korisnika) (ako ($ članovi -sadrži $ korisnika) (echo "$ user $ group`tYes" >> results.csv) ostalo (echo "$ user`tNo" >> rezultati .csv))

  • 2 odgovora
  • Sortiranje:

    Aktivnost

0

Trivijalno rješenje vašeg problema bilo bi zamotati svoj postojeći kod u drugu petlju i stvoriti izlaznu datoteku za svaku grupu:

$ grupe = Get-Content "C: \ groups.txt" foreach ($ grupa u $ grupama) ($ članovi = Get-ADGroupMember ... ...)

Čistiji pristup bio bi stvoriti predložak grupnog mapiranja, klonirati ga za svakog korisnika i popuniti kopiju korisnikovim članstvom u grupi. Nešto poput ovoga bi trebalo raditi:

$ template = @ () Get-Content "C: \ groups.txt" | ForEach-Object ($ predložak [$ _] = $ false) $ grupe = @ () Get-ADGroup -Filter * | ForEach-Object ($ grupe [$ _. DistinguishedName] = $ _. Ime) Get-ADUser -Filter * -Properties MemberOf | ForEach-Object ($ groupmap = $ template.Clone () $ _. MemberOf | ForEach-Object ($ groups [$ _]) | Where-Object ($ groupmap.ContainsKey ($ _)) | ForEach-Object ($ groupmap [$ _] = $ true) Novi-Objekt -Vrsta PSObjekt -Svojstvo $ groupmap) | Izvoz-Csv "C: \ user_group_mapping.csv" -NoType

0

Igrao sam se s ovim već neko vrijeme i mislim da sam pronašao način da vam dobijem upravo ono što tražite.

Mislim da je Ansgar bio na pravom putu, ali nisam ga mogao natjerati da učini ono što je učinio poslije. Spomenuo je da u vrijeme pisanja ovog teksta nije imao pristup AD okruženju.

Evo što sam smislio:

$ UserArray = Get-Content "C: \ Temp \ Users.txt" $ GroupArray = Get-Content "C: \ Temp \ Groups.txt" $ OutputFile = "C: \ Temp \ Something.csv" # Postavljanje hashtable za kasniju upotrebu $ UserHash = New-Object -TypeName System.Collections.Hashtable # Vanjska petlja za dodavanje korisnika i članstva u UserHash $ UserArray | ForEach-Object ($ UserInfo = Get-ADUser $ _ -Properties MemberOf # Skida LPAP sintaksu samo na SAMAccountName grupe $ Memberships = $ UserInfo.MemberOf | ForEach-Object (($ _. Split (",")) .replace ("CN =", "")) #Dodavanje para korisnika = članstvo u Hash $ UserHash.Add ($ _, $ Članstva)) # Vanjska petlja za stvaranje objekta po korisniku $ Results = $ UserArray | ForEach-Object (# Prvo kreirajte jednostavan objekt $ User = New-Object -TypeName PSCustomObject -Property @ (Name = $ _) # Dinamički dodajte članove objektu, na temelju $ GroupArray $ GroupArray | ForEach-Object (#Provjera $ UserHash da vidite da li se grupa pojavljuje na popisu članstva korisnika $ UserIsMember = $ UserHash. ($ User.Name) -sadrži $ _ #Dodavanje svojstva objektu i vrijednost $ User | Add-Member -MemberType NoteProperty -Name $ _ -Vrijednost $ UserIsMember) #Vraćanje objekta u varijablu Return $ User) #Pretvorite objekte u CSV, a zatim ih ispišite $ Results | ConvertTo-CSV -NoTypeInformation | Out-File $ OutputFile

Nadajmo se da sve ima smisla. Komentirao sam koliko sam mogao. Bilo bi vrlo lako pretvoriti u ADSI da nemate instaliran RSAT na bilo kojem stroju na kojem ga pokrećete. Ako vam zatreba, javite mi i napravit ću neke brze promjene.

Nije tajna da od prve verzije PowerShell-a Microsoft pokušava od njega učiniti glavni alat za administraciju sustava Windows. I na mnogo načina djeluje! Danas ćemo vam na jednostavnim primjerima pokazati mogućnosti PowerShell-a koje možete koristiti za dobivanje raznih informacija o korisnicima Active Directory-a i njihovim atributima.

Bilješka... Prije ste, da biste dobili informacije o atributima AD korisničkih računa, morali koristiti razne alate: ADUC konzolu (uključujući), uslužni program itd. Odabir alata obično se temeljio na zadatku i sposobnostima administratora za programiranje.

PowerShell 2.0 uvodi poseban modul za rad s Active Directory - (uveden u Windows Server 2008 R2), čiji cmdleti omogućuju izvođenje raznih manipulacija s objektima u AD direktoriju. Da biste dobili informacije o korisnicima domene Active Directory i njihovim svojstvima, koristite cmdlet Get-ADUser... Možete koristiti cmdlet Get-ADUser da biste dobili vrijednost bilo kojeg atributa postojećeg korisničkog računa u AD-u. Osim toga, možete odrediti različite kriterije odabira i generirati popise korisnika domene i njihovih atributa.

U ovom primjeru ćemo vam pokazati kako koristiti Get-ADUser PowerShell cmdlet za dobivanje informacija o tome kada je korisnička lozinka zadnji put promijenjena i kada će isteći.

Pokrenite prozor Powershll s administratorskim pravima i uvezite Active Directory modul naredbom:

Aktivni direktorij modula za uvoz

Savjet... U sustavu Windows Server 2012 i novijim, ova se stavka može preskočiti jer je modul Active Directory PowerShell omogućen prema zadanim postavkama.

U klijentskim operativnim sustavima (u istom Windowsu 10) da bi zapovjednik Get-AdUser radio, morate instalirati odgovarajuću verziju RSAT-a i omogućiti komponentu na upravljačkoj ploči Modul Active Directory za Windows PowerShell(Alati za udaljenu administraciju poslužitelja -> Alati za administraciju uloga -> AD DS i AD LDS alati -> AD DS alati).

Možete dobiti potpuni popis svih argumenata za Get-ADUser cmdlet ovako:

Pomozite Get-ADUser

Za popis svih računa domene pokrenite naredbu:

Get-ADUser -filter *

Format vraćenog popisa nije baš prikladan za korištenje, prikazuje se samo nekih osnovnih 10 od više od 120 atributa i svojstava korisničkih računa (DN, SamAccountName, Name, UPN, itd.), osim toga vidimo da postoji nema informacija o vremenu zadnje promjene lozinke...

Za prikaz potpunih informacija o svim dostupnim atributima korisnika korisnika, pokrenite naredbu:

Get-ADUser -identity tuser -properties *

Dakle, vidimo potpuni popis korisničkih atributa AD i njihovih vrijednosti povezanih s korisničkim računom. Zatim ćemo prijeći na formatiranje izlaza Get-ADUser cmdleta tako da se prikažu polja koja želimo. Zanimaju nas atributi:

  • Lozinka je istekla
  • Password LastSet
  • PasswordNeverExpires

Izvršimo naredbu:

Get-ADUser tuser - svojstva PasswordExpired, PasswordLastSet, PasswordNeverExpires

Sada korisnički podaci sadrže podatke o datumu promjene lozinke i vremenu kada istekne. Predstavimo informacije u prikladnijem tabelarnom obliku:

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

Za prikaz korisničkih podataka iz određenog OU-a koristit ćemo parametar SearchBase:

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

Rezultat izvršenja naredbe može se izvesti u tekstualnu datoteku:

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

Ili u CSV-u, koji će u budućnosti biti prikladan za izvoz u Excel (dodatno korištenjem sort-objekt sortirajte tablicu prema stupcu PasswordLastSet i dodajte uvjet gdje- korisničko ime mora sadržavati redak "Dmitry"):

Get-ADUser -filter * -properties PasswordExpired, PasswordLastSet, PasswordNeverExpires | gdje ($ _. ime -kao "* Dmitry *") | sort-objek PasswordLastSet | select-object Name, PasswordExpired, PasswordLastSet, PasswordNeverExpires | Export-csv -path c: \ temp \ user-password-expires-2015.csv

Dakle, možete izraditi tablicu sa svim potrebnim korisničkim atributima Active Directory.

Parametar –Filter koristi se za dobivanje popisa AD korisničkih računa na temelju određenog kriterija. Kao argumente za ovaj parametar možete navesti vrijednost određenih atributa korisnika Active Directoryja, kao rezultat toga će se cmdlet Get-ADUser primijeniti na korisnike koji odgovaraju kriterijima filtra.

Prikaz AD korisnika čije ime počinje s rimskim:

Get-ADUser -filter (ime -kao "Roman *")

Get-ADUser -Filter (SamAccountName -kao "*") | Mjera-Objekat

Popis svih aktivnih (ne blokiranih) računa u AD:

Get-ADUser -Filter (omogućeno -eq "True") | Odaberite objekt SamAccountName, Name, Surname, GivenName | Format-Tablica

Popis računa s isteklom zaporkom:

Get-ADUser -filter (omogućeno -eq $ True) -svojstva lozinka Istekla | gdje ($ _. Lozinka je istekla)

Popis aktivnih računa s poštanskim adresama:

Get-ADUser -Filter ((mail -ne "null") -i (Enabled -eq "true")) -Properties Prezime, GivenName, mail | Odaberite-ime objekta, prezime, ime, pošta | Format-Tablica

Zadatak: za popis računa koji su pohranjeni u tekstualnoj datoteci (jedan račun po retku), trebate dobiti telefonski broj korisnika u AD-u i prenijeti podatke u tekstualnu csv datoteku (možete je jednostavno uvesti u Esxel).

Import-Csv c: \ ps \ usernsme_list.csv | ForEach (Get-ADUser -identity $ _. User -Properties Ime, telefonski broj | Odaberite ime, telefonski broj | Export-CSV c: \ ps \ export_ad_list.csv -Dodaj -Encoding UTF8)

Sljedeći primjer vam omogućuje da prenesete korporativni adresar kao csv datoteku, koju kasnije možete uvesti u Outlook ili Mozilla Thunderbird:

Get-ADUser -Filter ((mail -ne "null") -i (Enabled -eq "true")) -Properties Prezime, GivenName, mail | Odaberite-ime objekta, prezime, ime, pošta | Export-Csv -NoTypeInformation -Encoding utf8 -delimiter "," $ env: temp \ mail_list.csv

Korisnici koji nisu promijenili lozinku u posljednjih 90 dana:

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

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

Popis grupa u kojima se nalazi korisnički račun

Get-AdUser winadmin -Properties memberof | Odaberite memberof -expandproperty memberof

Vrhunski povezani članci