Kako podesiti pametne telefone i računare. Informativni portal
  • Dom
  • Zanimljivo
  • Korišćenje Get-ADUser za dobijanje različitih informacija o korisnicima AD domena. Skripte za istovar svih korisnika iz MS Active Directory (ITGC)

Korišćenje Get-ADUser za dobijanje različitih informacija o korisnicima AD domena. Skripte za istovar svih korisnika iz MS Active Directory (ITGC)

Posvećeno korišćenju PowerShell-a za administriranje AD. Kao početnu tačku, odlučio sam uzeti 10 uobičajenih AD administracijskih zadataka i pogledati kako se oni mogu pojednostaviti korištenjem PowerShell-a:

  1. Resetujte korisničku lozinku
  2. Aktivirajte i deaktivirajte račune
  3. Deblokirajte korisnički račun
  4. Izbrišite svoj nalog
  5. Pronađite prazne grupe
  6. Dodajte korisnike u grupu
  7. Navedite članove grupe
  8. Pronađite zastarjele račune računara
  9. Deaktivirajte račun računara
  10. Pronađite računare po tipu

Osim toga, autor održava blog (koristeći PowerShell, naravno), preporučujemo da pogledate - jdhitsolutions.com/blog. I najrelevantnije što možete dobiti sa njegovog twittera twitter.com/jeffhicks.
Dakle, u nastavku je prijevod članka “Top 10 Active Directory zadataka riješenih pomoću PowerShell-a”.

Upravljanje Active Directory-om (AD) pomoću Windows PowerShell-a je lakše nego što mislite, i želim vam to dokazati. Možete jednostavno uzeti donje skripte i koristiti ih za rješavanje brojnih zadataka upravljanja AD.

Zahtjevi

Da biste koristili PowerShell za upravljanje AD-om, postoji nekoliko zahtjeva koji se moraju ispuniti. Na primjeru ću demonstrirati kako AD cmdleti rade na Windows 7 računaru.
Da biste koristili cmdlete, morate imati Windows Server 2008 R2 kontroler domene ili možete preuzeti i instalirati Active Directory Management Gateway Service na zastarjelim DC-ovima. Pažljivo pročitajte dokumentaciju prije instaliranja; Potrebno je ponovno pokretanje CD-a.
Na strani klijenta preuzmite i instalirajte (RSAT) za Windows 7 ili Windows 8. U Windows 7, moraćete da otvorite u Control Panels poglavlje Programi i biraj Uključite ili isključite Windows funkcije... Nađi Alati za udaljenu administraciju servera i proširite odjeljak Alati za administraciju uloga... Odaberite odgovarajuće stavke za AD DS i AD LDS alate, posebno imajte na umu da stavka mora biti odabrana Modul Active Directory za Windows PowerShell kao što je prikazano na slici 1. (U Windows 8, svi alati su odabrani po defaultu). Sada smo spremni za polazak.

Slika 1 Omogućavanje AD DS i AD LDS alata

Prijavljen sam sa nalogom sa pravima administratora domene. Većina cmdleta koje ću pokazati omogućit će vam da navedete alternativne vjerodajnice. U svakom slučaju, preporučujem čitanje pomoći ( Get-Help) i primjere koje ću pokazati u nastavku.
Pokrenite PowerShell sesiju i uvezite modul:

PS C: \> ActiveDirectory modula uvoza

Uvoz stvara novi PSDrive, ali ga nećemo koristiti. Međutim, možete vidjeti koje su naredbe u uvezenom modulu.

PS C: \> get-command -module ActiveDirectory

Ljepota ovih naredbi je u tome što ako mogu koristiti naredbu za jedan AD objekat, onda se može koristiti za 10, 100, pa čak i 1000. Hajde da vidimo kako neke od ovih cmdlet-a rade.

Zadatak 1: Resetujte korisničku lozinku

Počnimo s tipičnim zadatkom: resetiranje korisničke lozinke. To se može učiniti lako i jednostavno putem cmdleta Set-ADAccountPassword... Teški dio je da nova lozinka mora biti kvalificirana kao siguran niz: dio teksta koji je šifriran i pohranjen u memoriji tijekom PowerShell sesije. Prvo, napravimo varijablu s novom lozinkom:
PS C: \> $ new = Read-Host "Unesite novu lozinku" -AsSecureString

Zatim, unesite novu lozinku:

Sada možemo povratiti račun (koristeći samAccountname To je najbolja opcija) i postavite novu lozinku. Evo primjera za korisnika Jack Frost:

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

Nažalost, postoji greška sa ovim cmdletom: -Passthru, -Šta ako, i – Potvrdi ne radi. Ako više volite prečicu, pokušajte sljedeće:

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

Kao rezultat toga, trebam Jack da promijeni lozinku sljedeći put kada se prijavim, a ja modificiram račun koristeći Set-ADUser.

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

Rezultati pokretanja cmdlet-a se ne zapisuju u konzolu. Ako je potrebno, koristite -Istinito... Ali mogu saznati da li je operacija bila uspješna ili ne tako što ću izdvojiti korisničko ime pomoću cmdleta Get-ADUser i specificiranje imovine PasswordExpired kao što je prikazano na slici 2.


Rice. 2. Rezultati cmdleta Get-ADUser Cmdlet sa svojstvom PasswordExpired

Zaključak: Poništavanje korisničke lozinke pomoću PowerShell-a uopće nije teško. Priznajem da je poništavanje lozinke također jednostavno putem snap-a. Korisnici i računari Active Directory konzola Microsoft upravljačka konzola (MMC). Ali korištenje PowerShell-a je u redu ako trebate delegirati zadatak, ne želite implementirati gore spomenuti dodatak ili resetirati svoju lozinku u velikom automatiziranom IT procesu.

Zadatak 2: Aktivirajte i deaktivirajte račune

Sada deaktivirajmo nalog. Nastavimo raditi sa Jackom Frostom. Ovaj kod koristi parametar -Šta ako, što možete vidjeti u drugim cmdletima koji unose promjene kako bi testirali moju komandu bez njenog pokretanja.

PS C: \> Disable-ADAccount jfrost -whatif Šta ako: Izvođenje operacije "Set" na cilju "CN = Jack Frost, OU = osoblje, OU = Testiranje, DC = GLOBOMANTICS, DC = lokalno".

Sada deaktivirajmo stvarno:

PS C: \> Disable-ADAccount jfrost

A kada dođe vrijeme da aktivirate svoj račun, koji cmdlet će nam pomoći?

PS C: \> Enable-ADAccount jfrost

Ove cmdlet komande se mogu koristiti u cevovodnom izrazu, omogućavajući vam da aktivirate ili deaktivirate onoliko naloga koliko želite. Na primjer, ovaj kod deaktivira sve račune u odjelu prodaje.

PS C: \> get-aduser -filter "department -eq" prodaja "" | disable-adaccount

Naravno, pisanje filtera za Get-ADUser prilično zeznuto, ali ovdje se koristi parametar -Šta ako zajedno sa cmdlet-om Disable-ADAccount dolazi u pomoć.

Zadatak 3: Otključajte korisnički račun

Zamislite situaciju u kojoj je Jack zaključao svoj račun dok je pokušavao unijeti novu lozinku. Umjesto pokušaja da se pronađe njegov račun preko GUI-a, postupak otključavanja može se obaviti jednostavnom komandom.

PS C: \> Unlock-ADAccount jfrost

Cmdlet takođe podržava parametre -Šta ako i -Potvrdi.

Zadatak 4: Izbrišite nalog

Nije važno koliko korisnika izbrišete, to je lako učiniti pomoću cmdlet-a Remove-ADUser... Ne želim ukloniti Jacka Frosta, ali da želim, koristio bih kod ovako:

PS C: \> Remove-ADUser jfrost -whatif Šta ako: Izvođenje operacije "Ukloni" na cilju "CN = Jack Frost, OU = osoblje, OU = Testiranje, DC = GLOBOMANTICS, DC = lokalno".

Ili mogu unijeti više korisnika i izbrisati ih jednom jednostavnom naredbom:

PS C: \> get-aduser -filter "enabled -eq" false "" -property WhenChanged -SearchBase "OU = Employees, DC = Globomantics, DC = Local" | gdje ($ _. WhenChanged -le (Get-Date) .AddDays (-180)) | Remove-ADuser -whatif

Ova komanda će pronaći i ukloniti sve deaktivirane naloge OU zaposlenih koji se nisu mijenjali 180 dana ili više.

Zadatak 5: Pronalaženje praznih grupa

Grupno upravljanje je beskrajno i nezahvalno. Postoji mnogo načina da pronađete prazne grupe. Neki izrazi mogu funkcionirati bolje od drugih, ovisno o vašoj organizaciji. Kod u nastavku će pronaći sve grupe u domeni, uključujući one ugrađene.

PS C: \> get-adgroup -filter * | gdje (-Ne ($ _ | get-adgroupmember)) | Odaberite Ime

Ako imate grupe sa stotinama članova, korištenje ove naredbe može biti dugotrajno; Get-ADGroupMember provjerava svaku grupu. Ako možete ograničiti ili prilagoditi, bit će bolje.
Evo još jednog pristupa:

PS C: \> get-adgroup -filter "members -notlike" * "-AND GroupScope -eq" Universal "" -SearchBase "OU = Groups, OU = Employees, DC = Globomantics, DC = local" | Odaberite Ime, Grupu *

Ova komanda pronalazi sve univerzalne grupe koje nemaju članstvo u OU grupama i prikazuje neka svojstva. Rezultat je prikazan na slici 3.


Rice. 3. Pretraživanje i filtriranje univerzalnih grupa

Zadatak 6: Dodavanje korisnika u grupu

Dodajmo Jacka Frosta u čikašku IT grupu:

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

Da, tako je jednostavno. Također možete lako dodati stotine korisnika u grupe, iako je ovo malo nezgodno po mom mišljenju:

PS C: \> Add-ADGroupMember "Chicago Employees" -member (get-aduser -filter "city -eq" Chicago "")

Koristio sam izraz u zagradama da pronađem sve korisnike koji imaju vlasništvo City u Chicagu. Kod u zagradama se izvršava i rezultirajući objekti se prosljeđuju parametru –Member. Svaki prilagođeni objekt se dodaje grupi Chicago Employees. Nije bitno da li imamo posla sa 5 ili 5000 korisnika, ažuriranje članstva u grupama traje samo nekoliko sekundi. Ovaj izraz se također može napisati pomoću ForEach-Object, što bi moglo biti zgodnije:

PS C: \> Get-ADUser -filter "city -eq" Chicago "" | foreach (Add-ADGroupMember "Chicago Employees" -Member $ _)

Zadatak 7: Prikaz liste članova grupe

Možda želite da znate ko je u određenoj grupi. Na primjer, trebali biste povremeno saznati ko je član grupe administratora domene:

PS C: \> Get-ADGroupMember "Domain Admins"

Slika 4 prikazuje rezultat.


Rice. 4. Članovi grupe administratora domene

Cmdlet navodi AD objekt za svakog člana grupe. Ali šta je sa ugniježđenim grupama? Grupa My Chicago All Users je zbirka ugniježđenih grupa. Da dobijem listu svih računa, samo moram koristiti parametar –Rekurzivno.

PS C: \> Get-ADGroupMember "Chicago All Users" -Rekurzivno | Odaberite DistinguishedName

Ako želite da idete drugim putem - pronađite kojoj grupi korisnik pripada - koristite svojstvo korisnika Član:

PS C: \> get-aduser jfrost -property Memberof | Odaberite -ExpandProperty memberOf CN = NewTest, OU = Grupe, OU = Employees, DC = GLOBOMANTICS, DC = lokalni CN = Chicago Test, OU = Groups, OU = Employees, DC = GLOBOMANTICS, DC = lokalni CN = Chicago IT, OU = Grupe, OU = Zaposleni, DC = GLOBOMANTICS, DC = lokalni CN = Chicago Sales Users, OU = Grupe, OU = Zaposlenici, DC = GLOBOMANTICS, DC = lokalni

Koristio sam parametar -ExpandProperty za prikaz imena Član kao žice.

Zadatak 8: Pronađite zastarjele račune računara

Često mi se postavlja ovo pitanje: "Kako da pronađem zastarele račune računara?" A ja uvijek odgovaram: "Šta je za vas zastarjelo?" Kompanije imaju različite definicije kada je račun računara (ili korisnika, nije važno) zastario i više nije upotrebljiv. Što se mene tiče, obraćam pažnju na one naloge za koje lozinke nisu menjane određeno vreme. Ovaj period za mene je 90 dana - ako računar nije promenio lozinku zajedno sa domenom tokom ovog perioda, najverovatnije je van mreže i zastareo. Koristi se cmdlet Get-ADComputer:

PS C: \> get-adcomputer -filter "Passwordlastset -lt" 1/1/2012 "" -properties * | Odaberite ime, zadnja lozinka

Filter radi odlično sa tvrdom vrijednošću, ali ovaj kod će se ažurirati za sve račune računala koji nisu promijenili svoje lozinke od 1. januara 2012. Rezultati su prikazani na slici 5.


Rice. 5. Pronađite zastarjele račune računara

Druga opcija: pretpostavimo da ste barem na funkcionalnom nivou Windows 2003 domene. Filtrirajte prema svojstvu LastLogontimeStamp... Ova vrijednost je broj intervala od 100 nanosekundi od 1. januara 1601. i pohranjena je u GMT, tako da je rad s ovom vrijednošću malo težak:

PS C: \> get-adcomputer -filter "LastlogonTimestamp -gt 0" -properties * | odaberite ime, lastlogontimestamp, @ (Name = "LastLogon"; Expression = (:: FromFileTime ($ _. Lastlogontimestamp))), passwordlastset | Sortiraj LastLogonTimeStamp


Rice. 6. Pretvorite vrijednost LastLogonTimeStamp u uobičajeni format

Da kreiram filter, moram da konvertujem datum, na primer 1. januar 2012, u ispravan format. Konverzija se vrši u FileTime:

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

Sada mogu koristiti ovu varijablu u filteru za Get-ADComputer:

PS C: \> Get-ADComputer -Filter "(lastlogontimestamp -lt $ cutoff) -ili (lastlogontimestamp -notlike" * ")" -svojstvo * | Odaberite Ime, LastlogonTimestamp, PasswordLastSet

Gornji kod pronalazi iste računare prikazane na slici 5.

Zadatak 9: Deaktivirajte račun računara

Možda kada pronađete neaktivne ili zastarjele račune, želite ih deaktivirati. Ovo je prilično lako učiniti. Koristit ćemo isti cmdlet koji smo koristili s korisničkim nalozima. Možete ga poboljšati upotrebom samAccountname račun.

PS C: \> Disable-ADAccount -Identity "chi-srv01 $" -whatif Šta ako: Izvođenje operacije "Set" na cilju "CN = CHI-SRV01, CN = Računari, DC = GLOBOMANTICS, DC = lokalno".

Ili korištenjem cjevovodnog izraza:

PS C: \> get-adcomputer "chi-srv01" | Disable-ADAccount

Također mogu koristiti svoj kod da pronađem zastarjele račune i deaktiviram ih sve:

PS C: \> get-adcomputer -filter "Passwordlastset -lt" 1/1/2012 "" -properties * | Disable-ADAccount

Zadatak 10: Pronađite računare po tipu

Često mi se postavlja pitanje kako pronaći račune računala po tipu, kao što su serveri ili radne stanice. Ovo zahtijeva određenu količinu kreativnosti s vaše strane. Ne postoji ništa u AD-u što razlikuje server od klijenta, osim možda OS-a. Ako vaš računar koristi Windows Server 2008, potrebno je preduzeti nekoliko dodatnih koraka.
Prvo morate dobiti listu OS-a, a zatim filtriramo račune prema dostupnom OS-u.

PS C: \> Get-ADComputer -Filter * -Properties OperatingSystem | Odaberite OperatingSystem -unique | Sortiraj operativni sistem

Rezultati su prikazani na slici 7.


Rice. 7. Izdvojite OS listu

Želim da pronađem sve računare koji imaju serverski OS:

PS C: \> Get-ADComputer -Filter "OperatingSystem -like" * Server * "" -properties OperatingSystem, OperatingSystem ServicePack | Odaberite Ime, Op * | format-list

Rezultati su prikazani na slici 8.

Kao i kod drugih AD Get cmdleta, možete prilagoditi svoje parametre pretraživanja i ograničiti upit na određene OU, ako je potrebno. Svi izrazi koje sam pokazao mogu se integrirati u velike PowerShell izraze. Na primjer, možete sortirati, grupirati, primijeniti filtere, izvoziti u CSV ili kreirati i slati HTML izvještaje - sve iz PowerShell-a! U ovom slučaju ne morate pisati niti jednu škripu.
Evo bonusa za vas: izvještaj o starosti korisnika sačuvan u HTML fajlu:

PS C: \> Get-ADUser -Filter "Enabled -eq" True "-AND PasswordNeverExpires -eq" False "" -Properties PasswordLastSet, PasswordNeverExpires, PasswordExpired | Odaberite DistinguishedName, Name, pass *, @ (Name = "PasswordAge"; Expression = ((Get-Date) - $ _. PasswordLastSet)) | sortiraj PasswordAge -Descending | ConvertTo-Html -Title "(! LANG: Password Age Report" | Out-File c:\Work\pwage.htm !}

Iako ovaj izraz može izgledati pomalo zastrašujuće, uz malo znanja o PowerShell-u, jednostavan je za korištenje. I ostaje samo posljednji savjet: kako definirati prilagođeno svojstvo pod nazivom PasswordAge... Vrijednost predstavlja interval između današnjeg dana i svojstva PasswordLastSet. Zatim sortiram rezultate za svoju novu nekretninu. Slika 9 prikazuje izlaz za moj mali test domen.

Ažuriraj:
Objava sadrži prijevod članka na portalu

0

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

Nisam siguran kako da konvertujem skriptu da bih mogao da promenim $ 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 AD grupu u novoj CSV koloni (ili, ako to nije moguće, kreiranje zasebne CSV datoteke za svaku grupu sa rezultatima će također.

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 sa PS-om da bih to učinio

npr. rezultati.csv?:

IME 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) else (echo "$ user`tNo" >> rezultati .csv))

  • 2 odgovora
  • sortiranje:

    Aktivnost

0

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

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

Čistiji pristup bio bi kreiranje predloška mapiranja grupe, kloniranje za svakog korisnika i popunjavanje kopije korisnikovim članstvom u grupi. Ovako nešto bi trebalo raditi:

$ template = @ () Get-Content "C: \ groups.txt" | ForEach-Object ($ template [$ _] = $ false) $ groups = @ () 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) New-Object -Type PSObject -Property $ groupmap) | Izvezi-Csv "C: \ user_group_mapping.csv" -NoType

0

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

Mislim da je Ansgar bio na pravom putu, ali nisam mogao da ga nateram da uradi ono što je uradio posle. Napomenuo je da u vrijeme pisanja ovog teksta nije imao pristup AD okruženju.

Evo šta 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 kreiranje objekta po korisniku $ Results = $ UserArray | ForEach-Object (# Prvo kreirajte jednostavan objekat $ User = New-Object -TypeName PSCustomObject -Property @ (Name = $ _) # Dinamički dodajte članove objektu, na osnovu $ GroupArray $ GroupArray | ForEach-Object (#Provjera $ UserHash da vidite da li se grupa pojavljuje na listi članova korisnika $ UserIsMember = $ UserHash. ($ User.Name) -sadrži $ _ #Dodavanje svojstva objektu i vrijednost $ User | Add-Member -MemberType NoteProperty -Name $ _ -Value $ UserIsMember) #Vraćanje objekta u varijablu Return $ User) #Pretvorite objekte u CSV, a zatim ih iznesite $ 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 kojoj mašini na kojoj ga pokrećete. Ako vam zatreba, javite mi i napravit ću neke brze promjene.

Dobar dan, dragi čitaoci i pretplatnici, nastavljamo da istražujemo mogućnosti Powershell-a i Active Directory-a sa vama. Kao što se sjećate, ona ima sve korisničke i računalne račune u bazi podataka NTDS.dit, sve je odlično i centralizirano. Kada kompanija ima više od jednog administratora sistema, može doći do situacije da se u njoj akumuliraju smeće i nepotrebni akreditivi. Svi smo mi ljudi i neke stvari možemo zaboraviti, a u nekim trenucima možemo biti ometeni, što će dovesti i do zaboravljanja važnih informacija. I dolazimo do zaključka da se neaktivni korisnici (otpušteni ili zaboravljeni) gomilaju u Actvie direktoriju, u svakom slučaju, dobar sistem administrator bi ih trebao identificirati, onemogućiti i potom izbrisati 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, preko kojeg smo tražili nestale računare na lokalnoj mreži koji se nisu pojavili mjesec dana. Sada uradimo isto sa korisničkim nalozima. 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:

  • Zatražite ime> Izgubio sam korisnike
  • Opis ako je potrebno
  • Zahtjev root> ovdje možete ostaviti cijeli domen, ili ga odrediti na željenom OU

Zatim pritisnemo dugme zahtjev.

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

Kao rezultat, dobićete listu neaktivnih naloga zaposlenih koji su vam potrebni.

Putem powershell snap-in-a

Sve isto se može uraditi preko Powershell-a. Odmah ću dati kod čiji je zadatak traženje neaktivnih korisnika, za to sam odabrao period od 45 dana, isključivanje korisničkih podataka i prelazak u posebno određen OU.

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

  • U prvom redu deklarirate varijablu u kojoj postavljate pojam za pretraživanje
  • Kreirajte varijablu i uzorak do vremena posljednje prijave
  • Korisnici koji se sele

  • Izrada izvještaja u fajl

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

Get-Help Get-ADUser

U ovom članku ćemo pogledati mogućnosti PowerShell-a za upravljanje grupama domena Active Directory. Proći ćemo kroz kako kreirati novu grupu u AD-u, dodati joj korisnike (ili je izbrisati), navesti korisnike grupe i nekoliko drugih korisnih trikova grupe domena koji su izuzetno korisni u svakodnevnoj administraciji. Sljedeće osnovne cmdlete dostupne su u Active Directory PowerShell modulu za upravljanje AD grupama:

Da biste koristili ove cmdlete u vašoj PowerShell sesiji, mora se učitati poseban AD interakcijski modul - Modul Active Directory za Windows PowerShell... Ovaj modul je prvi put predstavljen u Windows Serveru 208 R2. U Windows Server 2012 i novijim verzijama, ovaj modul je podrazumevano omogućen. Na klijentskim računarima može se instalirati i omogućiti kao jedna od RSAT komponenti. Možete provjeriti da li je modul učitan ovako:

Get-Module -Listavailable

Kao što vidite, modul ActiveDirectory je učitan. Ako nije, uvezite ga naredbom:

Uvozni modul aktivni direktorij

Kompletnu listu naredbi modula možete dobiti na sljedeći način:

Get-Command -Module ActiveDirectory

U modulu je dostupno 147 cmdleta, od kojih 11 može raditi sa grupama.

Get-Command -Module ActiveDirectory -Naziv "* Grupa *"

Evo liste njih:

  • Add-ADPrincipalGroupMembership
  • Get-ADAccountAuthorizationGroup
  • Get-ADGroup
  • Get-ADGroupMember
  • Get-ADPrincipalGroupMembership
  • New-ADGroup
  • Remove-ADGroup
  • Remove-ADPrincipalGroupMembership
  • Set-ADGroup

Kreirajte novu grupu u navedenom kontejneru (OU) Active Directory koristeći naredbu New-ADGroup:

Nova-ADGroup "TestADGroup" -put "OU = Grupe, OU = Moskva, DC = corp, dc = winitpro, DC = ru" -GroupScope Global -PassThru –Verbose

Korištenje atributa Opis možete postaviti opis grupe i pomoću DisplayName promijenite naziv za prikaz.

Parametar GroupScope možete postaviti jednu od sljedećih vrsta grupa:

  • 0 = DomainLocal
  • 1 = Globalno
  • 2 = Univerzalno

Grupu za distribuciju možete kreirati ovako:

Nova-ADGroup "TestADGroup-Distr" -put "OU = Grupe, OU = Moskva, DC = corp, dc = winitpro, DC = ru" -GroupCategory Distribution -GroupScope Global -PassThru –Verbose

Add-AdGroupMember - dodajte korisnike u AD grupu

Možete dodati korisnike u grupu Active Directory koristeći Add- AdGroupMember... Dodajmo dva korisnika u novu grupu:

Add-AdGroupMember -Identity TestADGroup -Članovi korisnik1, korisnik2

Ako je lista korisnika za dodavanje u grupu prilično velika, možete spremiti listu računa u CSV datoteku, zatim uvesti ovu datoteku i dodati svakog korisnika u grupu.

Format CSV datoteke je sljedeći (lista korisnika, jedan po redu, naziv kolone je korisnici)

Uvoz-CSV \ Users.csv -Korisnici zaglavlja | ForEach-Object (Add-AdGroupMember -Identity 'TestADGroup' -members $ _. Korisnici)

Da dobijete sve članove jedne grupe (grupa A) i dodate ih u drugu grupu (grupa B), koristite ovu naredbu:

Get-ADGroupMember “GroupA” | Get-ADUser | ForEach-Object (Add-ADGroupMember -Identity “Group-B” -Members $ _)

U slučaju da trebate kopirati članove svih ugniježđenih grupa u novu grupu (rekurzivno), trebate koristiti sljedeću naredbu:

Get-ADGroupMember -Identitet “GroupA” -Rekurzivno | Get-ADUser | ForEach-Object (Add-ADGroupMember -Identity “GroupB” -Members $ _)

Remove-ADGroupMember - uklanjanje korisnika iz grupe

Da uklonite korisnike iz AD grupe, koristite naredbu Remove-ADGroupMember. Uklonimo dva korisnika iz grupe:

Remove-ADGroupMember -Identity TestADGroup -Članovi korisnik1, korisnik2

Potvrdite uklanjanje korisnika iz grupe:

Ako trebate ukloniti korisnike iz grupe prema listi iz CSV datoteke, koristite sljedeću naredbu:

Uvoz-CSV \ Users.csv -Korisnici zaglavlja | ForEach-Object (Remove-ADGroupMember -Identity 'TestADGroup' -members $ _. Korisnici)

Get-ADGroup - dobiti informacije o AD grupi

Cmdlet će vam pomoći da dobijete informacije o grupi. Get-ADGroup:

Get-ADGroup "TestADGroup"

Ova komanda prikazuje informacije o glavnim atributima grupe (DN, tip grupe, naziv, SID). Da biste prikazali vrijednost svih atributa AD domenske grupe, pokrenite sljedeću naredbu:

Get-ADGroup "TestADGroup" - svojstva *

Kao što možete vidjeti, sada se prikazuju atributi kao što su vrijeme kreiranja i modifikacije grupe, opis itd.

Koristeći Get-ADGroup cmdlet, možete pronaći sve grupe koje vas zanimaju prema određenom obrascu. Na primjer, trebate pronaći sve AD grupe koje sadrže frazu admini :

Get-ADGroup -LDAPFilter “(ime = * administratori *)” | Format-Tabela

Get-ADGroupMember - Navedite korisnike AD grupe

Prikaži listu korisnika u grupi:

Get-ADGroupMember "TestADGroup"

Da ostavite samo korisnička imena u rezultatima, pokrenite:

Get-ADGroupMember "TestADGroup" | ft name

Ako ova grupa uključuje druge grupe u domeni, za prikaz kompletne liste članova, uključujući sve ugniježđene grupe, koristite parametar Rekurzivno.

Get-ADGroupMember 'server-admins "-rekurzivno | ft ime

Da biste izvezli listu naloga koji pripadaju određenoj grupi u CSV datoteku (za dalju upotrebu u Excelu), pokrenite sljedeću naredbu:

Get-ADGroupMember 'server-admins "-rekurzivno | ft samaccountname | Out-File c: \ ps \ admins.csv

Koristit ćemo cmdlet za dodavanje informacija o AD korisničkom računu u tekstualnu datoteku. Na primjer, pored računa potrebno je prikazati poziciju i broj telefona korisnika grupe:

Get-ADGroupMember -Identitet 'server-admins' -rekurzivno | foreach (Get-ADUser $ _ -properties title, OfficePhone | Select-Object title, OfficePhone)

(Get-ADGroupMember -Identitet "administratori domene").

Ispostavilo se da imamo 7 administratorskih naloga u grupi "administratori domena".

Da biste pronašli listu praznih grupa u određenom OU, koristite ovu naredbu:

Get-ADGroup -Filter * -Properties Members -searchbase “OU = Moskva, DC = corp, dc = winitpro, DC = ru” | gdje (-ne $ _. članovi) | izaberite Ime

Top srodni članci