Si të konfiguroni telefonat inteligjentë dhe PC. Portali informativ
  • në shtëpi
  • Windows 10
  • Shkarkoni përdoruesit nga reklama. Përdorimi i Get-ADUser për të marrë informacione të ndryshme rreth përdoruesve të domenit AD

Shkarkoni përdoruesit nga reklama. Përdorimi i Get-ADUser për të marrë informacione të ndryshme rreth përdoruesve të domenit AD

Skriptet për të shkarkuar të gjithë përdoruesit nga MS Active Directory (ITGC)

Ivan Piskunov

Një nga procedurat standarde të auditimit ITGC për katalog Active Directory është të merrni shkarkimin e të gjithë përdoruesve të domenit. Bazuar në të dhënat e marra, më pas formohen procedurat e testimit, për shembull, studimi i listës së administratorëve ose identifikimi i përdoruesve me një fjalëkalim të skaduar. Mënyra më efikase për të formuar një shkarkim të tillë do të ishte përdorimi i ndërfaqes standarde PowerShell , shembuj të të cilëve do t'i shqyrtojmë në këtë artikull

1. Ngarkimi i shpejtë duke përdorur skriptin PowerShell

Më poshtë është një skript PowerShell si një nga mënyrat më të lehta dhe më të shpejta për të marrë një listë të të gjithë përdoruesve të një domeni AD në formatin CSV, i cili mund të hapet pa probleme nga i njëjti Excel.

$ objSearcher = New-Object System.DirectoryServices.DirectorySearcher $ objSearcher.SearchRoot = "LDAP: // ou = Përdoruesit, ou = Departmetet, dc = test, dc = ru" $ objSearcher.Filter = "(& y (person)C) (! userAccountControl: 1.2.840.113556.1.4.803: = 2)) "$ përdorues = $ objSearcher.FindAll () # Numri i llogarive $ users.Numëroni $ përdorues | PërÇdo-Object ($ përdorues = $ _. Vetitë e reja-Object PsObject -Property @ (Titulli = $ user.description Department = $ user.department Hyrja = $ user.userprincipalname Telefoni = $ user.telephonenumber Dhoma = $ user.physicaldeliveryofficename e plotë emri = përdorues $.cn)) | Export-Csv -NoClobber -Encoding utf8 -Shtegu C: list_domen_users.csv

Në mënyrë që skripti të funksionojë në sistemin tuaj, duhet ta korrigjoni pak, domethënë, të futni parametrat e nevojshëm, d.m.th. pasi në këtë shembull këto janë parametra Përdoruesit në njësi Departamentet në domen Test.ru. Dhe gjithashtu specifikoni shtegun për në vendndodhjen ku ruhet skedari list_domen_users.csv

Pas shkarkimit, nëse hapeni menjëherë list_domen_users.csv , do të duket në një formë të palexueshme, megjithatë, me mjete standarde mund ta sjellim lehtësisht në formatin që na nevojitet. Hapja në Excel list_domen_users.csv , zgjidhni kolonën e parë, më pas shkoni te skeda "Data" dhe klikoni "Tekst sipas kolonave". Zgjidhni "kufizuar" dhe klikoni "Next". Gati!

! Duhet të theksohet se ky skript nuk do të shfaqë më shumë se 1000 përdorues. Është mjaft i përshtatshëm për një kompani të vogël, por ata që kanë një numër të madh përdoruesish në domen duhet të përdorin metodat e përshkruara më poshtë.

2. cmdlet i avancuar PowerShell për marrjen e përdoruesve të shkarkuar të Active Directory

Moduli Active Directory për Windows PowerShell (i prezantuar në Windows Server 2008 R2 dhe më vonë) ju lejon të gjeneroni cmdlet që kryejnë manipulime të ndryshme me objektet e drejtorisë AD. Për të marrë informacion në lidhje me përdoruesit dhe pronat e tyre, përdorni cmdlet Get-ADUser.

Të fillosh hapni një dritare Powershell me të drejtat e administratorit dhe importoni modulin Active Directory për veprime të mëtejshme:
Direktoria aktive e Import-Modulit

për të listoni të gjitha llogaritë e domenit a, le të ekzekutojmë komandën:

Get-ADUser -filtri *

për të shfaq informacion të plotë për të gjitha atributet e disponueshme përdoruesi, ekzekutoni komandën

Get-ADUser -indentity tuser -properties *


Për shembull, ne jemi të interesuar për informacion rreth datën e ndryshimit të fjalëkalimit dhe kohën e skadimit të tij ... Rezultati i ekzekutimit të komandës mund të eksportohet në një skedar teksti:

Get-ADUser -filtri * -vetitë PasswordExpired, PasswordLastSet, PasswordNeverExpires | ft Emri, PasswordExpired, PasswordLastSet, PasswordNeverExpires> C: tempusers.txt

Ose menjëherë ngarkoni në CSV , i cili në të ardhmen do të jetë i përshtatshëm për t'u eksportuar në Excel (për më tepër, duke përdorur objektin e renditjes, ne do ta renditim tabelën sipas kolonës PasswordLastSet, dhe gjithashtu do të shtojmë kushtin ku - emri i përdoruesit duhet të përmbajë vargun "Dmitry")

Get-ADUser -filtri * -vetitë PasswordExpired, PasswordLastSet, PasswordNeverExpires | ku ($ _. emri –si “* Dmitry *”) | lloj-objekt PasswordLastSet | Select-object Emri, PasswordExpired, PasswordLastSet, PasswordNeverExpires | Export-csv -rruga c: tempuser-password-expires-2015.csv

Nuk është sekret që që nga versioni i parë i PowerShell, Microsoft është përpjekur ta bëjë atë mjetin kryesor të administrimit të Windows. Dhe në shumë mënyra funksionon! Sot, me shembuj të thjeshtë, do t'ju tregojmë aftësitë e PowerShell që mund të përdorni për të marrë informacione të ndryshme rreth përdoruesve të Active Directory dhe atributeve të tyre.

shënim... Më parë, për të marrë informacion në lidhje me atributet e llogarive të përdoruesve të AD, duhej të përdorje mjete të ndryshme: konsolën ADUC (përfshirë), një mjet, etj. Zgjedhja e mjetit zakonisht bazohej në detyrën në fjalë dhe aftësinë programuese të administratorit.

PowerShell 2.0 prezanton një modul të veçantë për të punuar me Active Directory - (i prezantuar në Windows Server 2008 R2), cmdlet-et e të cilit ju lejojnë të kryeni manipulime të ndryshme me objekte në drejtorinë AD. Për të marrë informacion në lidhje me përdoruesit e domenit të Active Directory dhe vetitë e tyre, përdorni cmdlet Get-ADUser... Ju mund të përdorni cmdlet Get-ADUser për të marrë vlerën e çdo atributi të një llogarie ekzistuese përdoruesi në AD. Përveç kësaj, ju mund të specifikoni kritere të ndryshme përzgjedhjeje dhe të gjeneroni lista të përdoruesve të domenit dhe atributet e tyre.

Në këtë shembull, ne do t'ju tregojmë se si të përdorni Get-ADUser PowerShell cmdlet për të marrë informacion se kur është ndryshuar për herë të fundit fjalëkalimi i një përdoruesi dhe kur do të skadojë.

Hapni dritaren Powershll me të drejtat e administratorit dhe importoni modulin Active Directory me komandën:

Direktoria aktive e Import-Modulit

Këshilla... Në Windows Server 2012 dhe më të lartë, ky artikull mund të anashkalohet, pasi moduli Active Directory PowerShell është aktivizuar si parazgjedhje.

Në sistemet operative të klientit (në të njëjtin Windows 10) që komandanti Get-AdUser të funksionojë, duhet të instaloni versionin e duhur të RSAT dhe të aktivizoni komponentin në panelin e kontrollit Moduli Active Directory për Windows PowerShell(Mjetet e Administrimit të Serverit në distancë -> Mjetet e Administrimit të Rolit -> Mjetet AD DS dhe AD LDS -> Mjetet e AD DS).

Ju mund të merrni një listë të plotë të të gjitha argumenteve në cmdlet Get-ADUser si kjo:

Ndihmoni Get-ADUser

Për të renditur të gjitha llogaritë e domenit, ekzekutoni komandën:

Get-ADUser -filtri *

Formati i listës së kthyer nuk është shumë i përshtatshëm për t'u përdorur, shfaqen vetëm disa 10 bazë nga më shumë se 120 atributet dhe vetitë e llogarive të përdoruesve (DN, SamAccountName, Emri, UPN, etj.); përveç kësaj, ne shohim se ka nuk ka informacion për kohën e ndryshimit të fundit të fjalëkalimit ...

Për të shfaqur informacion të plotë për të gjitha atributet e disponueshme të tuserit të përdoruesit, ekzekutoni komandën:

Get-ADUser -indentity tuser -properties *

Pra, ne shohim një listë të plotë të atributeve të përdoruesit AD dhe vlerat e tyre të lidhura me llogarinë e përdoruesit. Më pas, ne do të kalojmë në formatimin e daljes së cmdlet Get-ADUser në mënyrë që të shfaqen fushat që duam. Ne jemi të interesuar për atributet:

  • Fjalëkalimi ka skaduar
  • PasswordLastSet
  • Fjalëkalimi nuk skadon kurrë

Le të ekzekutojmë komandën:

Get-ADUser tuser -properties PasswordExpired, PasswordLastSet, PasswordNeverExpires

Tani të dhënat e përdoruesit përmbajnë informacion në lidhje me datën e ndryshimit të fjalëkalimit dhe kohën kur ai skadon. Le të paraqesim informacionin në një formë tabelare më të përshtatshme:

Get-ADUser -filtri * -vetitë PasswordExpired, PasswordLastSet, PasswordNeverExpires | ft Emri, PasswordExpired, PasswordLastSet, PasswordNeverExpires

Për të shfaqur të dhënat e përdoruesit nga një OU specifike, ne do të përdorim parametrin Baza e Kërkimit:

Get-ADUser -SearchBase ‘OU = Moskë, DC = winitpro, DC = loc’ -filtri * -vetitë PasswordExpired, PasswordLastSet, PasswordNeverExpires | ft Emri, PasswordExpired, PasswordLastSet, PasswordNeverExpires

Rezultati i ekzekutimit të komandës mund të eksportohet në një skedar teksti:

Get-ADUser -filtri * -vetitë PasswordExpired, PasswordLastSet, PasswordNeverExpires | ft Emri, PasswordExpired, PasswordLastSet, PasswordNeverExpires> C: \ temp \ users.txt

Ose në CSV, i cili në të ardhmen do të jetë i përshtatshëm për t'u eksportuar në Excel (përveç kësaj duke përdorur lloj-objekt renditni tabelën sipas kolonës PasswordLastSet dhe shtoni gjithashtu një kusht ku- emri i përdoruesit duhet të përmbajë rreshtin "Dmitry"):

Get-ADUser -filtri * -vetitë PasswordExpired, PasswordLastSet, PasswordNeverExpires | ku ($ _. emri –si “* Dmitry *”) | lloj-objekt PasswordLastSet | Select-object Emri, PasswordExpired, PasswordLastSet, PasswordNeverExpires | Export-csv -rruga c: \ temp \ user-password-expires-2015.csv

Kështu, ju mund të ndërtoni një tabelë me çdo atribut të kërkuar të përdoruesit të Active Directory.

Parametri –Filter përdoret për të marrë një listë të llogarive të përdoruesve të AD bazuar në një kriter specifik. Si argumente për këtë parametër, mund të specifikoni vlerën e disa atributeve të përdoruesve të Active Directory, si rezultat, cmdlet Get-ADUser do të aplikohet për përdoruesit që përputhen me kriteret e filtrit.

Shfaqja e përdoruesve të AD, emri i të cilëve fillon me Roman:

Get-ADUser -filtri (emri -si "Roman *")

Get-ADUser -Filter (SamAccountName -si "*") | Masa-Objekt

Lista e të gjitha llogarive aktive (jo të bllokuara) në AD:

Get-ADUser -Filter (Enabled -eq "True") | Zgjidh-Object SamAccountName, Emri, Mbiemri, GivenEmri | Format-Tabela

Lista e llogarive me fjalëkalim të skaduar:

Get-ADUser -filtri (Enabled -eq $ E vërtetë) - vetitë fjalëkalimi i skaduar | ku ($ _. Fjalëkalimi i skaduar)

Lista e llogarive aktive me adresa postare:

Get-ADUser -Filter ((mail -ne "null") -dhe (Enabled -eq "true")) -Properties Mbiemri, Emri i dhënë, mail | Zgjidh-Emri i objektit, Mbiemri, Emri i dhënë, posta | Format-Tabela

Detyrë: për një listë llogarish që ruhen në një skedar teksti (një llogari për rresht), duhet të merrni numrin e telefonit të përdoruesit në AD dhe të ngarkoni informacionin në një skedar teksti csv (mund ta importoni lehtësisht në Esxel).

Import-Csv c: \ ps \ usernsme_list.csv | Për Secilin (Get-ADUser -identity $ _. Emri i Vetive të Përdoruesit, Numri i telefonit | Zgjidh Emri, Numri i telefonit | Eksporto-CSV c: \ ps \ export_ad_list.csv -Shto -Encoding UTF8)

Shembulli i mëposhtëm ju lejon të ngarkoni një libër adresash të korporatës si një skedar csv, të cilin më vonë mund ta importoni në Outlook ose Mozilla Thunderbird:

Get-ADUser -Filter ((mail -ne "null") -dhe (Enabled -eq "true")) -Properties Mbiemri, Emri i dhënë, mail | Zgjidh-Emri i objektit, Mbiemri, Emri i dhënë, posta | Export-Csv -NoTypeInformation -Encoding utf8 -delimiter "," $ env: temp \ mail_list.csv

Përdoruesit që nuk e kanë ndryshuar fjalëkalimin e tyre në 90 ditët e fundit:

$ 90_Days = (Data e marrjes) .adddays (-90) Filter Get-ADUser ((passwordlastset -le $90_days))

$ përdorues = Get-ADUser winadmin -Vetitë e vogla të fotografisë $ user.thumbnailFoto | Set-Content winadmin.jpg -Bajti i kodimit

Lista e grupeve ku ndodhet llogaria e përdoruesit

Get-AdUser winadmin -Properties anëtarof | Zgjidh anëtarof -expandproperty Memberof

Në komentet e artikullit të mëparshëm, ata u kujtuan për kontabilitetin në Excel në vend të 1C. Epo, le të kontrollojmë se sa e dini Excel. Sot do t'ju tregoj se si të merrni të dhëna nga Active Directory dhe të punoni me të pa makro dhe PowerShell - vetëm me mekanizmat standardë të Office. Për shembull, mund të merrni lehtësisht analitikë mbi përdorimin e sistemeve operative në organizatën tuaj nëse nuk keni tashmë diçka si Microsoft SCOM. Epo, ose thjesht ngrohuni dhe shpërqendroni nga skenarët.


Sigurisht, ju mund t'i merrni të dhënat si në shembujt më poshtë në vetëm një rresht në PowerShell. Por, së pari, PowerShell është shumë i mërzitshëm, dhe së dyti, Excel është në gjendje të përditësojë në mënyrë dinamike të dhënat - dokumentet që rezultojnë mund të publikohen në rrjet dhe të harrojnë azhurnimin e tyre.

Për të punuar me të dhënat, do të përdor motorin Power Query. Për Office 2010 dhe 2013, do të duhet të instaloni një plug-in, në Microsoft Office 2016 ky modul është tashmë i integruar. Fatkeqësisht, botimi standard nuk na mjafton, na duhet Professional.


Vetë mekanizmi është krijuar për të marrë dhe përpunuar të dhëna nga një sërë burimesh - nga skedarët e vjetër ODBC dhe teksti, te Exchange, Oracle dhe Facebook. Më shumë detaje rreth mekanizmit dhe gjuhës së integruar të skriptimit "M" janë shkruar tashmë në Habré, por unë do të analizoj disa shembuj të përdorimit të Power Query për të marrë të dhëna nga Active Directory.

Ngrohja: shikoni kur përdoruesit tanë janë identifikuar

Vetë pyetja për bazën e të dhënave të domenit krijohet në skedën "Të dhënat - Pyetje e re - Nga burime të tjera - Nga Active Directory".



Ne tregojmë burimin e të dhënave.


Do t'ju duhet të zgjidhni një emër domaini, të specifikoni të dhënat e nevojshme për lidhje. Tjetra, zgjidhni llojin e objekteve, në këtë shembull - përdorues... Në anën e djathtë të dritares së pamjes paraprake, pyetja po ekzekutohet tashmë, duke shfaqur një pamje paraprake të të dhënave.



Përgatitja e kërkesës, duke admiruar pamjen paraprake.


Kërkesa duhet të përgatitet paraprakisht duke klikuar butonin "ndrysho" dhe duke zgjedhur kolonat e kërkuara. Në fakt, këto kolona janë klasa secila prej tyre përmban një grup atributesh specifike të objektit Active Directory, përveç kolonës kryesore. Emri i shfaqur që është në vetvete një atribut. Do të fokusohem në klasa përdorues, person, krye dhe sigurimi Kryesor... Tani ju duhet të zgjidhni atributet e kërkuara nga çdo klasë duke përdorur "extension" - ikonën me dy shigjeta në titullin e kolonës:

  • Klasa përdorues zgjerohet duke zgjedhur lastLogonTimestamp dhe UserAccountControl;
  • v person zgjidhni numër telefoni;
  • v kryekurKrijohet;
  • dhe ne sigurimi KryesorSamAccountEmri.


Zgjerimi i kërkesës.


Tani le të konfigurojmë filtrin: në veçanti, për të mos bllokuar llogari, duhet që atributi userAccountControl të ketë një vlerë 512 ose 66048. Filtri mund të jetë i ndryshëm në mjedisin tuaj. Mund të lexoni më shumë rreth atributit në dokumentacionin e Microsoft.



Aplikoni një filtër.


Ndonjëherë Excel përcakton gabimisht formatin e të dhënave, veçanërisht vlerën e atributit lastLogonTimestamp. Nëse papritmas ndodhi një fatkeqësi e tillë, në skedën "Konverto" mund të vendosni formatin e duhur.

Tani kolona userAccountControl duhet të hiqet - nuk nevojitet fare në ekran. Dhe klikoni "Ngarko dhe mbyll".


Rezultati është një pjatë, e cila mbetet pak për t'u sjellë në mendje. Për shembull, riemërtoni kolonat në diçka të lexueshme. Dhe konfiguroni përditësimet automatike të të dhënave.


Përditësimi automatik gjatë hapjes së një tabele ose me ndërprerje kohore konfigurohet në skedën "Të dhënat" në "Properties".



Konfigurimi i rifreskimit të të dhënave.


Pas përfundimit të konfigurimit të përditësimit, mund t'ia jepni me siguri tabelën departamentit të personelit ose shërbimit të sigurisë - tregojini ata se kush është identifikuar dhe kur.


Kërko kodin në gjuhën "M" nën spoiler.

le Source = ActiveDirectory.Domains ("domain.ru"), domain.ru = Burimi () [# "Kategoritë e objekteve"], user1 = domain.ru (), # "Remote Columns" = Table.RemoveColumns (përdoruesi1, ( "organizationalPerson", "shadowAccount", "posixAccount", "msExchOmaUser", "msExchBaseClass", "msExchIMRecipient", "msExchCertificateInformation", "msExchMultiMediaUser", "msExchMailStorage", "msExchtescurity"andRecipiente # "Kollonat e fshira", "securityPrincipal", ("sAMAccountName"), ("sAMAccountName")), # "Top Expanded" = Table.ExpandRecordColumn (# "SecurityPrincipal Expanded "," top ", (" whenCreated "), ( " whenCreated ")), #" Expanded person "= Tabela.ExpandRecordColumn (#" Expanded Top "," person ", (" phonenumber "), (" phonenumber ")), #" Expanded user "= Table.ExpandRecordColumn (# " Personi i zgjeruar "," përdorues ", (" lastLogonTimestamp "," userAccountControl " ), ("lastLogonTimestamp", "userAccountControl")), # "Rreshtat e filtruar" = Table.SelectRows (# "Përdorues i zgjeruar", secili (= 512 ose = 66048)), # "Lloji i modifikuar" = Tabela. TransformColumnTypes (# "Rreshtat e filtruar", (("lastLogonTimestamp", shkruani datatime))), # "Kollonat e fshira1" = Tabela.RemoveColumns (# "Lloji i ndryshuar", ("userAccountControl")) në # "Kollonat e fshira1"

Krijoni një libër adresash ose çfarë të bëni kur portali i korporatës nuk është miqësor me AD

Një tjetër mundësi për përdorimin e Excel në lidhje me Active Directory është formimi i një libri adresash bazuar në të dhënat e AD. Është e qartë se libri i adresave do të jetë i përditësuar vetëm nëse ka rregull në domen.


Le të krijojmë një kërkesë për një objekt përdorues, zgjeroni klasën përdorues v postë dhe klasa person v numër telefoni... Fshini të gjitha kolonat përveç Emri i dalluar- struktura e domenit përsërit strukturën e ndërmarrjes, pra emrat Njësitë Organizative korrespondojnë me emrat e departamenteve. Në mënyrë të ngjashme, grupet e sigurisë mund të përdoren si bazë për emrat e njësive organizative.


Tani nga linja CN = Emri i përdoruesit, OU = Departamenti i Kontabilitetit, OU = Departamenti, DC = domain, DC = ru ju duhet të nxirrni direkt emrin e departamentit. Mënyra më e lehtë për ta bërë këtë është përdorimi i ndarësve në skedën Transform.



Ne nxjerrim tekstin.


Unë përdor si ndarës OU = dhe , OU =... Parimisht mjafton një presje, por jam i risiguruar.



Futni ndarësit.


Tani duke përdorur filtrin, mund të ndërpresni të panevojshmet OU si përdoruesit e bllokuar dhe E ndertuar, konfiguroni renditjen dhe ngarkoni të dhënat në tabelë.



Pamje përmbledhëse e tabelës.

Raport i shpejtë për përbërjen e stacioneve të punës, pa futjen e agjentëve dhe përgatitjeve të tjera

Tani le të përpiqemi të krijojmë një tabelë të dobishme duke marrë të dhëna në kompjuterë. Le të bëjmë një raport mbi sistemet operative të përdorura nga kompania: për këtë do të krijojmë një kërkesë, por në navigator këtë herë do të zgjedhim kompjuter.



Ne bëjmë një kërkesë për kompjuterin.


Le të lëmë klasat e kolonave kompjuter dhe krye dhe zgjeroni ato:

  • Klasa kompjuter zgjerohet duke zgjedhur cn, Sistemi operativ, Operative SystemServicePack dhe Versioni i Sistemit operativ;
  • në klasë krye zgjidhni kurKrijohet.


Pyetje e zgjeruar.


Nëse dëshironi, mund të bëni një raport vetëm në sistemet operative të serverit. Për shembull, filtro sipas sistemit operativ ose operativSystemVersion. Unë nuk do ta bëj këtë, por do të korrigjoj shfaqjen e kohës së krijimit - më intereson vetëm viti. Për ta bërë këtë, në skedën "Konvertimi", zgjidhni kolonën e kërkuar dhe zgjidhni "Viti" në menynë "Data".



Ne nxjerrim vitin nga koha kur kompjuteri hyri në domen.


Tani gjithçka që mbetet është të hiqni kolonën e emrit të shfaqjes si të panevojshme dhe të ngarkoni rezultatin. Të dhënat janë gati. Tani mund të punoni me ta si me një tryezë të zakonshme. Së pari, le të bëjmë një tabelë kryesore në skedën "Insert" - "Pivot Table". Le të pajtohemi me zgjedhjen e burimit të të dhënave dhe të konfigurojmë fushat e tij.



Cilësimet e fushës së tabelës rrotulluese.


Tani mbetet të personalizoni dizajnin sipas dëshirës tuaj dhe të admironi rezultatin:



Tabela përmbledhëse për kompjuterët në AD.


Nëse dëshironi, mund të shtoni një grafik strumbullar, gjithashtu në skedën "Fut". Në "Kategoritë" (ose "Rreshtat", për shije) shtoni Sistemi operativ, në të dhënat - cn... Në skedën "Dizajn" mund të zgjidhni llojin e grafikut sipas dëshirës tuaj, unë preferova atë rrethore.



Tabela me byrek.


Tani mund të shihni qartë se, pavarësisht përditësimit të vazhdueshëm, numri i përgjithshëm i stacioneve të punës me Windows XP dhe serverëve me Windows 2003 është mjaft i madh. Dhe ka diçka për të cilën duhet të përpiqeni.


Kërkoni kodin nën spoiler.

le Source = ActiveDirectory.Domains ("domain.ru"), domain.ru = Burimi () [# "Kategoritë e objekteve"], computer1 = domain.ru (), # "Remote Columns" = Tabela.RemoveColumns (kompjuter1, ( "user", "organizationalPerson", "person")), # "Other deleted kolona" = Table.SelectColumns (# "Deleted columns", ("displayName", "computer", "lart")), # "Artikulli i zgjeruar kompjuteri "= Tabela.ExpandRecordColumn (#" Kolona të tjera në distancë "," kompjuter ", (" cn "," operativSystem ","operativeSystemServicePack "," operativSystemVersion "), (" cn "," OperatingSystem "," OperatingSystemServicePack "," OperatingSystemVersion ")), #" Expanded Top "= Tabela.ExpandRecordColumn (#" ExpandedCompjuter "," top ", (" whenCreated "), (" whenCreated ")), #" Viti i marrë "= Tabela.TransformColumns ( # " Sipër e zgjeruar", (("kur u krijua", Data.Viti))), # "Kollonat e fshira1" = Tabela.Hiq kolonat (# "Viti i marrë", ("Emri i shfaqur")) në # "Kollonat e fshira1"

Shto etiketa

Në këtë artikull, ne do t'i hedhim një vështrim aftësive të PowerShell për menaxhimin e grupeve të domenit të Active Directory. Ne do të shqyrtojmë se si të krijojmë një grup të ri në AD, të shtojmë përdorues në të (ose ta fshijmë), të listojmë përdoruesit e grupit dhe disa truke të tjera të dobishme të grupeve të domenit që janë jashtëzakonisht të dobishme në administrimin e përditshëm. Cmdlet-et e mëposhtme bazë janë të disponueshme në Modulin Active Directory PowerShell për të menaxhuar grupet AD:

Për të përdorur këto cmdlet në sesionin tuaj të PowerShell, duhet të ngarkohet një modul i veçantë ndërveprimi AD - Moduli Active Directory për Windows PowerShell... Ky modul u prezantua për herë të parë në Windows Server 208 R2. Në Windows Server 2012 dhe më vonë, ky modul aktivizohet si parazgjedhje. Në kompjuterët e klientit, ai mund të instalohet dhe aktivizohet si një nga komponentët RSAT. Ju mund të kontrolloni nëse moduli është i ngarkuar si kjo:

Get-Module -Lista e disponueshme

Siç mund ta shihni, moduli ActiveDirectory është i ngarkuar. Nëse jo, importojeni me komandën:

Direktoria aktive e Import-Modulit

Një listë e plotë e komandave të modulit mund të merret si më poshtë:

Get-Command -Moduli ActiveDirectory

Ka 147 cmdlet të disponueshme në modul, nga të cilat 11 mund të punojnë me grupe.

Get-Command -Moduli ActiveDirectory -Emri "* Grupi *"

Këtu është një listë e tyre:

  • Add-ADPrincipalGroupMembership
  • Get-ADAccountAuthorizationGroup
  • Get-ADGroup
  • Get-ADGroup Member
  • Merr anëtarësimin në ADP PrincipalGroup
  • New-ADGroup
  • Hiq-ADGroup
  • Remove-ADPrincipalGroupMembership
  • Set-ADGroup

Krijo një grup të ri në drejtorinë aktive të kontejnerit të specifikuar (OU) duke përdorur komandën New-ADGroup:

New-ADGroup "TestADGroup" -rruga "OU = Grupet, OU = Moskë, DC = corp, dc = winitpro, DC = ru" -GroupScope Global -PassThru –Verbose

Duke përdorur atributin Përshkrim ju mund të vendosni një përshkrim të grupit dhe duke përdorur Emri i shfaqur ndryshoni emrin e shfaqur.

Parametri GroupScope mund të vendosni një nga llojet e mëposhtme të grupeve:

  • 0 = DomainLocal
  • 1 = Global
  • 2 = Universale

Ju mund të krijoni një grup shpërndarjeje si ky:

New-ADGroup "TestADGroup-Distr" -rruga "OU = Grupet, OU = Moskë, DC = corp, dc = winitpro, DC = ru" -Group Category Distribution -GroupScope Global -PassThru –Verbose

Add-AdGroupMember - shtoni përdorues në grupin AD

Ju mund të shtoni përdorues në një grup Active Directory duke përdorur Add- Anëtar i grupit të reklamave... Le të shtojmë dy përdorues në grupin e ri:

Add-AdGroupMember -Identity TestADGroup -Anëtarët përdorues1, përdorues2

Nëse lista e përdoruesve për t'i shtuar një grupi është mjaft e madhe, mund ta ruani listën e llogarive në një skedar CSV, më pas importoni këtë skedar dhe shtoni çdo përdorues në grup.

Formati i skedarit CSV është si më poshtë (lista e përdoruesve, një për rresht, emri i kolonës është përdorues)

Import-CSV. \ Users.csv -Përdoruesit e Header | Për çdo objekt (Add-AdGroupMember -Identity 'TestADGroup' - anëtarët $ _. Përdoruesit)

Për të marrë të gjithë anëtarët e një grupi (grupi A) dhe për t'i shtuar ata në një grup tjetër (grupi B), përdorni këtë komandë:

Get-ADGroupAnëtar "GroupA" | Get-ADUser | PërÇdo-Objekt (Add-ADGroupMember -Identity "Group-B" - Members $ _)

Në rast se ju duhet të kopjoni anëtarët e të gjitha grupeve të mbivendosur në një grup të ri (në mënyrë rekursive), duhet të përdorni komandën e mëposhtme:

Get-ADGroupMember -Identiteti “GroupA” -Rekursive | Get-ADUser | Për çdo objekt (Add-ADGroupMember -Identity "GroupB" -Antaret $ _)

Remove-ADGroupMember - hiqni përdoruesit nga një grup

Për të hequr përdoruesit nga një grup AD, përdorni komandën Remove-ADGroupMember. Le të heqim dy përdorues nga grupi:

Hiq-ADGroupMember -Identity TestADGroup -Anëtarët përdorues1, përdorues2

Konfirmo heqjen e përdoruesve nga grupi:

Nëse keni nevojë të hiqni përdoruesit nga një grup sipas listës nga një skedar CSV, përdorni komandën e mëposhtme:

Import-CSV. \ Users.csv -Përdoruesit e Header | Për çdo objekt (Remove-ADGroupMember -Identity 'TestADGroup' - anëtarët $ _. Përdoruesit)

Get-ADGroup - merrni informacion në lidhje me një grup AD

cmdlet do t'ju ndihmojë të merrni informacione rreth grupit. Get-ADGroup:

Get-ADGroup "TestADGroup"

Kjo komandë shfaq informacion në lidhje me atributet kryesore të grupit (DN, lloji i grupit, emri, SID). Për të shfaqur vlerën e të gjitha atributeve të një grupi domeni AD, ekzekutoni komandën e mëposhtme:

Get-ADGroup "TestADGroup" -properties *

Siç mund ta shihni, tani shfaqen atribute të tilla si koha e krijimit dhe modifikimit të grupit, përshkrimi, etj.

Duke përdorur cmdlet Get-ADGroup, mund të gjeni të gjitha grupet që ju interesojnë sipas një modeli specifik. Për shembull, ju duhet të gjeni të gjitha grupet AD që përmbajnë frazën administratorët :

Get-ADGroup -LDAPFilter “(emri = * admins *)” | Format-Tabela

Get-ADGroupMember - Listoni përdoruesit e një grupi AD

Shfaq një listë të përdoruesve në një grup:

Get-ADGroup Member "TestADGroup"

Për të lënë vetëm emrat e përdoruesve në rezultate, ekzekutoni:

Get-ADGroupAnëtar "TestADGroup" | emri ft

Nëse ky grup përfshin grupe të tjera në domen, për të shfaqur një listë të plotë anëtarësh, duke përfshirë të gjitha grupet e ndërlidhura, përdorni parametrin Rekursive.

Get-ADGroupMember 'server-admins "-rekursive | emri ft

Për të eksportuar listën e llogarive që i përkasin një grupi të caktuar në një skedar CSV (për përdorim të mëtejshëm në Excel), ekzekutoni komandën e mëposhtme:

Get-ADGroupMember 'server-admins "-rekursive | ft samaccountname | Jashtë skedarit c: \ ps \ admins.csv

Ne do të përdorim cmdlet për të shtuar informacionin e llogarisë së përdoruesit të AD në një skedar teksti. Për shembull, përveç llogarisë, duhet të shfaqni pozicionin dhe numrin e telefonit të përdoruesit të grupit:

Get-ADGroupMember -Identiteti 'server-admins' -rekurzive | foreach (Get-ADUser $ _ -titulli i vetive, OfficePhone | Zgjidh titullin e objektit, OfficePhone)

(Get-ADGroupMember -Identiteti "administratorët e domenit").

Doli që ne kemi 7 llogari administratori në grupin "administratorët e domenit".

Për të gjetur një listë të grupeve boshe në një OU specifike, përdorni këtë komandë:

Get-ADGroup -Filter * -Properties Anëtarët -baza e kërkimit “OU = Moscow, DC = corp, dc = winitpro, DC = ru” | ku (-jo $ _. anëtarë) | zgjidhni Emrin

0

Unë kam skriptin e mëposhtëm të punës që kontrollon nëse një listë e madhe përdoruesish në një skedar CSV është anëtar i një grupi AD dhe i shkruan rezultatet në results.csv.

Nuk jam i sigurt se si ta konvertoj skriptin që të mund të ndryshoj $ group = "InfraLite" në $ group = DC. \ List_Of_AD_Groups.CSV.

Kështu, skripti nuk kthen vetëm ndeshjet për një grup AD, por kështu kthen ndeshjet për 80 grupe të AD të përfshira në List_of_AD_groups.csv. Shkrimi PO / JO për çdo grup AD në një kolonë të re CSV (ose, nëse kjo nuk është e mundur, do të krijohet gjithashtu një skedar CSV i veçantë për secilin grup me rezultate.

Mund ta bëja manualisht duke ndryshuar vlerën nga grupi $ dhe emrin e skedarit të eksportit dhe duke e ripunuar skriptin 80 herë, por duhej të isha i shpejtë me PS për ta bërë këtë.

p.sh. results.csv?:

EMRI AD_GROUP1 AD_GROUP2 AD_GROUP80 etj. përdorues1 po jo po përdorues2 jo jo po përdorues3 jo po jo jehonë "UserName`InfraLite" >> results.csv $ users = GC. \ user_list.csv $ group = "InfraLite" $ anëtarë = Get-ADGroupAmber -Identity $ group -Rekursive | Zgjidh -ExpandProperty SAMAccountName foreach ($ përdorues në $ përdorues) (nëse ($ anëtarë -përmban $ përdorues) (jehonë "$ user $ group`tYes" >> results.csv) tjetër (jehonë "$ user`tNo" >> rezultate .csv))

  • 2 pergjigje
  • Renditja:

    Aktiviteti

0

Një zgjidhje e parëndësishme për problemin tuaj do të ishte të mbështillni kodin tuaj ekzistues në një lak tjetër dhe të krijoni një skedar dalës për secilin grup:

$ group = Get-Content "C: \ groups.txt" foreach ($ grup në $ grupe) ($ anëtarë = Get-ADGroupAmber ... ...)

Një qasje më e pastër do të ishte krijimi i një shablloni për hartimin e grupit, klonimi i tij për çdo përdorues dhe plotësimi i një kopjeje me anëtarësimet në grup të përdoruesit. Diçka si kjo duhet të funksionojë:

$ template = @ () Get-Content "C: \ groups.txt" | PërÇdo-Object ($ shabllon [$ _] = $ false) $ grupe = @ () Get-ADGroup -Filter * | PërÇdo-Object ($ grupet [$ _. Emri i dalluar] = $ _. Emri) Get-ADUser -Filter * -Properties MemberOf | ForCeach-Object ($ groupmap = $ template.Clone () $ _. MemberOf | ForEach-Object ($ grupe [$ _]) | Where-Object ($ groupmap.ContainsKey ($ _)) | ForÇdo-Object ($ grupmap [$ _] = $ e vërtetë) Objekt i ri -Lloji PSObjekt -Properti $ grupmap) | Eksporto-Csv "C: \ user_group_mapping.csv" -NoType

0

Unë kam luajtur me këtë për një kohë dhe mendoj se kam gjetur një mënyrë për t'ju bërë pikërisht atë që dëshironit.

Mendoj se Ansgar ishte në rrugën e duhur, por nuk munda ta bëj atë të bënte atë që bëri më pas. Ai përmendi se në kohën e shkrimit, ai nuk kishte qasje në mjedisin e AD.

Kjo është ajo që dola me:

$ UserArray = Get-Content "C: \ Temp \ Users.txt" $ GroupArray = Get-Content "C: \ Temp \ Groups.txt" $ OutputFile = "C: \ Temp \ Something.csv" # Vendosja e një hashtable për përdorim të mëvonshëm $ UserHash = New-Object -TypeName System.Collections.Hashtable # Cikli i jashtëm për të shtuar përdoruesit dhe anëtarësimin në UserHash $ UserArray | ForEach-Object ($ UserInfo = Get-ADUser $ _ -Properties MemberOf # Zhvesh sintaksën LPAP vetëm në emrin e llogarisë SAMA të grupit $ Anëtarësime = $ UserInfo.MemberOf | ForÇdo-Object (($ _. Split (",")) .replace ("CN =", "")) #Shtimi i përdoruesit = Çifti i anëtarësimit në hash $ UserHash.Add ($ _, $ Anëtarësime)) # Lak i jashtëm për të krijuar një objekt për përdorues $ Rezultatet = $ UserArray | ForEach-Object (# Fillimisht krijoni një objekt të thjeshtë $ User = New-Object -TypeName PSCustomObject -Property @ (Emri = $ _) # Shtoni në mënyrë dinamike anëtarë në objekt, bazuar në $ GroupArray $ GroupArray | ForÇdo-Object (#Checking $ UserHash për të parë nëse grupi shfaqet në listën e anëtarësimit të përdoruesit. _ -Vlera $ UserIsMember) #Kthimi i objektit në variablin Kthehu $ User) #Konverto objektet në një CSV, pastaj nxirr ato $ Rezultate | ConvertTo-CSV -NoTypeInformation | Out-File $ OutputFile

Le të shpresojmë që gjithçka të ketë kuptim. Komentova aq sa munda. Do të ishte shumë e lehtë të konvertohej në ADSI nëse nuk do të kishit të instaluar RSAT në çfarëdo makinerie ku e përdorni. Nëse keni nevojë, më njoftoni dhe unë do të bëj disa ndryshime të shpejta.

Artikujt kryesorë të lidhur