Kako postaviti pametne telefone i računala. Informativni portal
  • Dom
  • Zanimljiv
  • Korištenje Get-ADUser za dobivanje raznih informacija o korisnicima AD domene. Skripte za istovar svih korisnika iz MS Active Directory (ITGC)

Korištenje Get-ADUser za dobivanje raznih informacija o korisnicima AD domene. Skripte za istovar svih korisnika iz MS Active Directory (ITGC)

Posvećeno korištenju PowerShell-a za administriranje AD. Kao polazište, autor je odlučio uzeti 10 tipičnih AD administracijskih zadataka i vidjeti kako se oni mogu pojednostaviti pomoću PowerShell-a:

  1. Poništite korisničku lozinku
  2. Aktivirajte i deaktivirajte račune
  3. Otključajte korisnički račun
  4. Izbrišite svoj račun
  5. Pronađite prazne grupe
  6. Dodajte korisnike u grupu
  7. Navedite članove grupe
  8. Pronađite ustajale račune računala
  9. Deaktivirajte račun računala
  10. Pronađite računala po vrsti

Osim toga, autor vodi blog (na PowerShell-u, naravno), preporučujemo da pogledate - jdhitsolutions.com/blog. I najažurnije što možete dobiti s njegovog twittera twitter.com/jeffhicks.
Dakle, u nastavku je prijevod članka “Top 10 Active Directory zadataka riješenih s PowerShell-om”.

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

Zahtjevi

Da biste koristili PowerShell za upravljanje AD-om, potrebno je ispuniti nekoliko zahtjeva. Pokazat ću kako AD cmdleti rade na primjeru Windows 7 stroja.
Da biste koristili cmdlete, morate imati kontroler domene Windows Server 2008 R2 ili možete preuzeti i instalirati Active Directory Management Gateway Service na naslijeđene DC-ove. Prije instalacije pažljivo pročitajte dokumentaciju; Potrebno je ponovno pokretanje.
Na strani klijenta preuzmite i instalirajte (RSAT) za Windows 7 ili Windows 8. U sustavu Windows 7 morat ćete otvoriti Upravljačke ploče poglavlje Programi i biraj Uključite ili isključite značajke sustava Windows. Pronaći Alati za udaljenu administraciju poslužitelja i proširi 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 sustavu Windows 8 svi su alati odabrani prema zadanim postavkama). Sada smo spremni za rad.

Slika 1 Omogućavanje AD DS i AD LDS alata

Prijavljen sam s računom s pravima administratora domene. Većina cmdleta koje ću vam pokazati omogućit će vam da navedete alternativne vjerodajnice. U svakom slučaju preporučam čitanje pomoći ( Dobiti pomoć) i primjere koje ću pokazati u nastavku.
Pokrenite PowerShell sesiju i uvezite modul:

PS C:\> ActiveDirectory modula za uvoz

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 objekt, onda se može koristiti za 10, 100, pa čak i 1000. Pogledajmo kako neki od ovih cmdleta rade.

Zadatak 1: Poništite korisničku lozinku

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

Zatim unesite novu lozinku:

Sada možemo izdvojiti račun (koristeći samAccountname je najbolja opcija) i postavite novu lozinku. Evo primjera za korisnika Jacka Frosta:

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

Nažalost, postoji greška s ovim cmdletom: -proći kroz, -što ako, I – Potvrdi Ne radi. Ako vam je draži prečac, pokušajte sljedeće:

PS C:\>Set-ADAccountPassword jfrost -NewPassword(ConvertTo-SecureString -AsPlainText -String" [e-mail zaštićen]"-sila)

Na kraju mi ​​je potreban Jack da promijeni svoju lozinku sljedeći put kada se prijavim, a pomoću toga ažuriram račun Set-ADUser.

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

Rezultati izvršenja cmdleta ne zapisuju se na konzolu. Ako je potrebno, upotrijebite -Pravi. Ali mogu saznati je li operacija bila uspješna ili ne tako da izvučem korisničko ime pomoću cmdleta Get-ADUser i navođenje svojstva Lozinka je istekla kao što je prikazano na slici 2.


Riža. 2. Rezultati Get-ADUser Cmdleta 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. Korisnici i računala Active Directory konzole Microsoftova upravljačka konzola (MMC). No korištenje PowerShell-a je u redu ako trebate delegirati zadatak, ne želite implementirati prethodno spomenuti dodatak ili poništiti svoju lozinku kao dio velikog automatiziranog IT procesa.

Zadatak 2: Aktivirajte i deaktivirajte račune

Sada deaktivirajmo račun. Nastavit ćemo surađivati ​​s Jackom Frostom. Ovaj kod koristi parametar -što ako, što možete vidjeti u drugim cmdletima koji unose promjene kako bi testirali moju naredbu bez njenog pokretanja.

PS C:\> Disable-ADAccount jfrost -whatif Što ako: Izvođenje operacije "Set" na cilju "CN=Jack Frost, OU=staff,OU=Testing,DC=GLOBOMANTICS,DC=local".

A sada deaktivirajmo stvarno:

PS C:\> Onemogući-ADAccount jfrost

A kada dođe vrijeme za aktivaciju računa, koji će nam cmdlet pomoći?

PS C:\> Enable-ADAccount jfrost

Ovi cmdleti mogu se koristiti u cjevovodnom izrazu, omogućujući vam da aktivirate ili deaktivirate onoliko računa koliko želite. Na primjer, ovaj će kod deaktivirati sve račune u odjelu prodaje (Prodaja)

PS C:\> get-aduser -filter "odjel -eq "prodaja"" | onemogući-adaccount

Naravno, pisanje filtera za Get-ADUser prilično komplicirano, ali ovdje se koristi parametar -što ako zajedno sa cmdletom Onemogući ADAračun dolazi u pomoć.

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

Razmislite o situaciji u kojoj je Jack zaključao svoj račun dok je pokušavao unijeti novu lozinku. Umjesto da pokušavate pronaći njegov račun putem GUI-ja, postupak otključavanja može se obaviti jednostavnom naredbom.

PS C:\> Otključaj-ADAračun jfrost

Cmdlet također podržava parametre -što ako I -Potvrdi.

Zadatak 4: Izbrišite račun

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

PS C:\> Remove-ADUser jfrost -whatif Što 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 ukloniti ih jednom jednostavnom naredbom:

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

Ova naredba će pronaći i ukloniti sve deaktivirane račune OU zaposlenika koji se nisu mijenjali 180 dana ili više.

Zadatak 5: Pronalaženje praznih grupa

Upravljanje grupama je beskrajan i nezahvalan zadatak. 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 ugrađene grupe.

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

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

PS C:\> get-adgroup -filter "članovi -notlike "*" -AND GroupScope -eq "Universal"" -SearchBase "OU=Grupe,OU=Zaposlenici,DC=Globomantics, DC=local" | Odaberite naziv, grupu*

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


Riža. 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 jednostavno dodati stotine korisnika u grupe, iako je to po mom mišljenju malo nezgodno:

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

Upotrijebio sam cjevovodni izraz u zagradama da pronađem sve korisnike koji imaju svojstvo City u Chicagu. Kôd u zagradama se izvršava, a rezultirajući objekti se prosljeđuju parametru –Member. Svaki korisnički objekt dodaje se grupi Chicago Employees. Nije važno imamo li posla s 5 ili 5000 korisnika, potrebno je samo nekoliko sekundi za ažuriranje članstva u grupama. Ovaj izraz se također može napisati pomoću Za svaki objektšto bi moglo biti zgodnije:

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

Zadatak 7: Prikaz popisa članova grupe

Možda biste željeli znati tko je u određenoj skupini. Na primjer, trebali biste povremeno provjeravati tko je u grupi Administratori domene:

PS C:\> Get-ADGroupMember "Administratori domene"

Slika 4 prikazuje rezultat.


Riža. 4. Članovi grupe Administratori domene

Cmdlet ispisuje AD objekt za svakog člana grupe. Što je s ugniježđenim grupama? Grupa My Chicago All Users je zbirka ugniježđenih grupa. Da bih dobio popis svih računa, samo moram koristiti parametar -Ponavljajući.

PS C:\> Get-ADGroupMember "Svi korisnici Chicaga" -Rekurzivno | Odaberite DistinguishedName

Ako želite ići drugim putem - pronaći kojoj grupi korisnik pripada - upotrijebite svojstvo korisnika Član:

PS C:\> get-aduser jfrost -property Memberof | Odaberite -ExpandProperty memberOf CN=NewTest,OU=Groups,OU=Zaposlenici, DC=GLOBOMANTICS,DC=lokalni CN=Chicago Test,OU=Grupe,OU=Zaposlenici, DC=GLOBOMANTICS,DC=lokalni CN=Chicago Grupe,OU=Zaposlenici, DC=GLOBOMANTICS,DC=lokalni CN=Korisnici prodaje u Chicagu,OU=Grupe,OU=Zaposlenici, DC=GLOBOMANTICS,DC=lokalni

Koristio sam parametar -Proširi svojstvo za prikaz imena Član poput struna.

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

Često mi se postavlja pitanje: "Kako mogu pronaći zastarjele račune računala?". A ja uvijek odgovaram: "Što je za vas zastarjelo?" Tvrtke se razlikuju u svojoj definiciji kada je računalni račun (ili korisnički račun, bilo što) zastario i više nije upotrebljiv. Što se mene tiče, obraćam pažnju na one račune čije lozinke nisu mijenjane određeno vrijeme. Ovo razdoblje za mene je 90 dana - ako računalo nije promijenilo lozinku zajedno s domenom tijekom tog razdoblja, najvjerojatnije je offline i zastarjelo. Cmdlet korišten Get-ADComputer:

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

Filtar izvrsno radi s tvrdom vrijednošću, ali ovaj će se kod ažurirati za sve račune računala koji nisu promijenili svoje lozinke od 1. siječnja 2012. Rezultati su prikazani na slici 5.


Riža. 5. Pronađite zastarjele račune računala

Alternativno, pretpostavimo da ste barem na funkcionalnoj razini domene Windows 2003. Filtrirajte prema svojstvu LastLogontimeStamp. Ova vrijednost je broj intervala od 100 nanosekundi od 1. siječnja 1601. i pohranjena je u GMT, pa je rad s ovom vrijednošću pomalo težak:

PS C:\> get-adcomputer -filter "LastlogonTimestamp -gt 0" -properties * | odaberite naziv,posljednja vremenska oznaka, @(Name="LastLogon";Izraz=(::FromFileTime ($_.Lastlogontimestamp))),passwordlastset | SortLastLogonTimeStamp


Riža. 6. Pretvorite vrijednost LastLogonTimeStamp u poznati format

Da bih izradio filtar, trebam pretvoriti datum, kao što je 1. siječnja 2012., u ispravan format. Pretvorba 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,Posljednja vremenska oznaka,Posljednja lozinka

Gornji kod pronalazi ista računala koja su prikazana na slici 5.

Zadatak 9: Deaktivirajte račun računala

Možda ćete ih htjeti deaktivirati kada pronađete neaktivne ili zastarjele račune. Za to je prilično jednostavno. Koristit ćemo isti cmdlet koji smo koristili s korisničkim računima. Možete ga poboljšati pomoću samAccountname račun.

PS C:\> Disable-ADAccount -Identity "chi-srv01$" -whatif Što ako: Izvođenje operacije "Set" na cilju "CN=CHI-SRV01, CN=Computers,DC=GLOBOMANTICS,DC=local".

Ili pomoću izraza cjevovoda:

PS C:\> get-adcomputer "chi-srv01" | Onemogući-ADAračun

Također mogu koristiti svoj kod za pronalaženje zastarjelih računa i deaktiviranje svih njih:

PS C:\> get-adcomputer -filter "Passwordlastset -lt "1/1/2012"" -properties *| Onemogući ADAračun

Zadatak 10: Pronađite računala po vrsti

Također me često pitaju kako pronaći račune računala prema vrsti, kao što su poslužitelji ili radne stanice. To zahtijeva malo kreativnosti s vaše strane. Ne postoji ništa u AD-u što razlikuje poslužitelj od klijenta, osim možda OS-a. Ako vaše računalo radi sa sustavom Windows Server 2008, morat ćete poduzeti nekoliko dodatnih koraka.
Prvo morate dobiti popis OS-a, a zatim filtriramo račune prema dostupnim OS-ima.

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

Rezultati su prikazani na slici 7.


Riža. 7. Izdvojite OS popis

Želim pronaći sva računala s OS poslužitelja:

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 parametre pretraživanja i po potrebi ograničiti upit na određene OU-ove. Svi izrazi koje sam pokazao mogu se integrirati u velike PowerShell izraze. Na primjer, možete sortirati, grupirati, primijeniti filtre, izvoziti u CSV ili izraditi i poslati HTML izvješća - sve iz PowerShell-a! U tom slučaju ne morate napisati niti jednu skriptu.
Evo bonusa za vas: izvješće o dobi korisnika zaporke spremljeno u HTML datoteci:

PS C:\> Get-ADUser -Filter "Omogućeno -eq "True" -AND PasswordNeverExpires -eq "False"" -Svojstva PasswordLastSet,PasswordNeverExpires,PasswordExpired | Odaberite DistinguishedName,Name,pass*,@(Name="PasswordAge"; Expression=((Get-Date)-$_.PasswordLastSet)) |sort PasswordAge -Descending | ConvertTo-Html -Title "(!LANG:Izvješće o dobi lozinke" | Out-File c:\Work\pwage.htm !}

Iako ovaj izraz može izgledati pomalo zastrašujuće, uz minimalno poznavanje PowerShell-a, jednostavan je za korištenje. I postoji samo posljednji savjet: kako definirati prilagođeno svojstvo tzv PasswordAge. Vrijednost je jaz između danas i svojstva PasswordLastSet. Zatim sortiram rezultate za svoju novu nekretninu. Slika 9 prikazuje izlaz za moju malu testnu domenu.

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

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, stvaranje zasebne CSV datoteke za svaku grupu s rezultatima učinit će isto.

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

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 ($user u $users) ( if ($members -sadrži $user) ( echo "$user $group`tYes" >> results.csv ) else ( 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:

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

Elegantniji 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 funkcionirati:

$template = @() Get-Content "C:\groups.txt" | ForEach-Object ( $template[$_] = $false ) $groups = @() Get-ADGroup -Filter * | ForEach-Object ( $groups[$_.DistinguishedName] = $_.Name ) Get-ADUser -Filter * -Properties MemberOf | ForEach-Object ($groupmap = $template.Clone() $_.MemberOf | ForEach-Object ($groups[$_]) | Where-Object ($groupmap.ContainsKey($_)) | ForEach-Object ($groupmap [$_] = $true ) Novi objekt -Tip PSObjekt -Svojstvo $groupmap ) | Izvoz-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 tražite.

Mislim da je Ansgar bio na pravom putu, ali nisam ga mogao natjerati da učini ono što je uslijedilo. 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 User=Članstvo u Hash $UserHash.Add($_,$Memberships) ) # 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 $ _ -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 kojem stroju na kojem ovo pokrećete. Ako trebate, javite mi i napravit ću neke brze izmjene.

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 se pokazati da gomila smeće i dodatne 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.

Preko ADUC snap

Prošli put sam vam već dao primjer korištenja snap-ina Active Directory Users and Computers, 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, da biste to učinili, pritisnite WIN + R i unesite dsa.msc.

U obrazac zahtjeva koji se otvori unesite:

  • Naziv upita > moji su izgubljeni korisnici
  • Opis ako je potrebno
  • Zatražite root > ovdje možete ostaviti cijelu domenu, ili navesti željeni OU

Zatim kliknite gumb za 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.

Preko powershell snap-a

Sve isto se može učiniti putem Powershell-a. Odmah ću dati kod, čiji je zadatak tražiti neaktivne korisnike, za to sam odabrao razdoblje od 45 dana, isključivši korisničke podatke i preseljenje u posebno određen OU za to.

$date_with_offset=(Get-Date).AddDays(-45)
$users = Get-ADUser -Properties LastLogonDate -Filter (LastLogonDate -lt $date_with_offset ) | SortLastLogonDate
foreach ($user u $users) (set-aduser $user -enabled $false; move-adobject -identity $user -targetpath "ou=Odbačeno,ou=Msk L.Users,ou=Location,dc=msk,dc= contoso,dc=com")
Get-ADUser -Properties LastLogonDate -Filter (LastLogonDate -lt $date_with_offset ) | SortLastLogonDate | FT Ime, LastLogonDate -AutoSize | Izlazna datoteka c:\Script\users.txt

  • U prvom retku deklarirate varijablu u kojoj postavljate razdoblje pretraživanja
  • Napravite varijablu i napravite odabir na temelju vremena posljednje prijave
  • Premještanje korisnika

  • Izrada izvješća u datoteci

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

Get-Help Get-ADUser

U ovom članku ćemo pogledati PowerShellovu sposobnost upravljanja grupama domena Active Directory. Pogledat ćemo kako stvoriti novu grupu u AD-u, dodati (ili ukloniti) korisnike u nju, navesti korisnike grupe i nekoliko drugih korisnih radnji grupe domene koje su iznimno korisne u svakodnevnoj administraciji. Za upravljanje AD grupama u modulu Active Directory PowerShell dostupni su sljedeći osnovni cmdleti:

Za korištenje ovih cmdleta u vašoj PowerShell sesiji, mora se učitati poseban modul za interakciju s AD-om - Modul Active Directory za Windows PowerShell. Ovaj modul je prvi put predstavljen u sustavu Windows Server 208 R2. U sustavu Windows Server 2012 i novijim, ovaj je modul omogućen prema zadanim postavkama. Na klijentskim računalima može se instalirati i omogućiti kao jedna od RSAT komponenti. Možete provjeriti je li modul učitan na sljedeći način:

Get-Module -List dostupan

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

Aktivni imenik modula za uvoz

Potpuni popis naredbi modula može se dobiti na sljedeći način:

Get-Command -Module ActiveDirectory

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

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

Ovdje je njihov popis:

  • Add-ADPrincipalGroupMembership
  • Get-ADAccountAuthorizationGroup
  • Get-ADGroup
  • Get-ADGroupMember
  • Get-ADPrincipalGroupMembership
  • Nova-ADGrupa
  • Remove-ADGroup
  • Ukloni-ADPrincipalGroupMembership
  • Set-ADGroup

Kreirajmo novu grupu u navedenom Active Directory spremniku (OU) pomoću naredbe Nova-ADGrupa:

New-ADGroup "TestADGroup" -put "OU=Groups,OU=Moscow,DC=corp,dc=winitpro,DC=ru" -GroupScope Global -PassThru –Verbose

S atributom Opis možete postaviti opis za grupu i sa naziv za prikaz promijenite naziv za prikaz.

Parametar GroupScope Možete odrediti jednu od sljedećih vrsta grupa:

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

Grupu za distribuciju možete stvoriti ovako:

New-ADGroup "TestADGroup-Distr" -put "OU=Groups,OU=Moscow,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 popis korisnika za dodavanje u grupu prilično velik, možete spremiti popis računa u CSV datoteku, zatim uvesti datoteku i dodati svakog korisnika u grupu.

Format CSV datoteke je sljedeći (popis korisnika, jedan po retku, naziv stupca je korisnici)

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

Da biste dobili sve članove jedne grupe (grupa A) i dodali ih u drugu grupu (grupa B), koristite sljedeću 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 upotrijebiti sljedeću naredbu:

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

Remove-ADGroupMember - Uklonite korisnike iz grupe

Za uklanjanje korisnika iz AD grupe upotrijebite naredbu Remove-ADGroupMember. Uklonimo dva korisnika iz grupe:

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

Potvrdite uklanjanje korisnika iz grupe:

Ako trebate ukloniti korisnike iz grupe po popisu iz CSV datoteke, upotrijebite sljedeću naredbu:

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

Get-ADGroup - dobiti informacije o AD grupi

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

Get-ADGroup "TestADGroup"

Ova naredba prikazuje informacije o glavnim atributima grupe (DN, tip grupe, naziv, SID). Za prikaz vrijednosti svih atributa AD grupe domene, pokrenite sljedeću naredbu:

Get-ADGroup "TestADGroup" - svojstva *

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

Možete koristiti cmdlet Get-ADGroup da biste pronašli sve grupe od interesa na temelju određenog uzorka. Na primjer, želite pronaći sve grupe oglasa koje sadrže izraz administratori :

Get-ADGroup -LDAPFilter “(name=*admins*)” | Format tablice

Get-ADGroupMember - popis članova AD grupe

Prikaži popis korisnika grupe:

Get-ADGroupMember "TestADGroup"

Da biste u rezultatima ostavili samo korisnička imena, pokrenite:

Get-ADGroupMember "TestADGroup"| ft ime

Ako su druge grupe domene uključene u ovu grupu, za prikaz kompletnog popisa članova, uključujući sve ugniježđene grupe, koristite opciju Ponavljajući.

Get-ADGroupMember 'administratori poslužitelja" -rekurzivni| ft naziv

Da biste izvezli popis računa koji pripadaju određenoj grupi u CSV datoteku (za daljnju upotrebu u Excelu), pokrenite sljedeću naredbu:

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

Za dodavanje podataka korisničkog računa u AD u tekstualnu datoteku, koristit ćemo cmdlet. Na primjer, osim računa, trebate prikazati poziciju i telefonski broj korisnika grupe:

Get-ADGroupMember -Identitet 'administratori poslužitelja' -rekurzivni| foreach ( Get-ADUser $_ -properties title, OfficePhone|Select-Object title, OfficePhone)

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

Pokazalo se da u grupi "administratori domene" imamo 7 administratorskih računa.

Da biste pronašli popis praznih grupa u određenom OU, koristite sljedeću naredbu:

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

Vrhunski povezani članci