Si të konfiguroni telefonat inteligjentë dhe PC. Portali informativ
  • në shtëpi
  • Interesante
  • Shkarkimi i përdoruesve të bllokuar nga ad powershell. Gjeni përdorues joaktivë në Active Directory

Shkarkimi i përdoruesve të bllokuar nga ad powershell. Gjeni përdorues joaktivë në Active Directory

Sot do të përpiqemi të shkarkojmë listën e të gjithë përdoruesve në një skedar të veçantë nga Active Directory. PowerShell do të jetë asistenti ynë kryesor në këtë çështje. Kjo për shkak se Microsoft fillimisht planifikoi PowerShell Shell si mjetin kryesor për menaxhimin e komponentëve të serverit Windows. Dhe sot, kur tashmë kemi versionin 2.0, në përgjithësi, kjo është kështu.

Edhe në të kaluarën e afërt, për të ndërvepruar disi me AD, administratorët duhej të kishin në dispozicion ose programin dsquery, ose të gjitha llojet e skripteve ose shërbimeve. Sot, duke filluar me Windows Server 2008 R2, ne mund të punojmë me AD përmes PowerShell. Me ardhjen e PowerShell 2.0, një modul i veçantë përdoret për të bashkëvepruar me Active Directory Moduli Active Directory për Windows PowerShell e cila përmban listën e kërkuar të cmdlet-ve. Për detyrat tona, ne do të përdorim komandën Get-ADUser.

Pra, në varësi të sistemit operativ që do të ekzekutojmë tastierën PowerShell, do të na duhet të kryejmë "hapa përgatitor".

1) Nëse punojmë nën Windows Server deri në versionin 2012, atëherë duhet të ekzekutojmë komandën:

  • Direktoria aktive e Import-Modulit - komanda për importimin e një moduli në AD

Për versionet e sistemit operativ nga 2012 e lart, ky modul është aktivizuar tashmë si parazgjedhje.

2) Nëse punojmë nga ndonjë klient Windows, atëherë duhet të instalohet paketa e administrimit në distancë RSAT, me komponentin Active Directory Module për Windows PowerShell të instaluar.

Vlen të përmendet se cmdlet Get-ADUser rekomandohet të ekzekutohet kur sasia e të dhënave që ngarkohen është deri në 1000 përdorues.

Eksportimi i përdoruesve të AD duke përdorur PowerShell në një skedar të veçantë

Së pari, le të thërrasim ndihmën për komandën Get-ADUser. Si rezultat, do të merrni të gjitha komandat e nevojshme për administrim të mëtejshëm.

  • ndihmë Get-ADUser - komanda për të thirrur ndihmë

Për të marrë një listë të të gjithë përdoruesve me të gjitha vetitë në një dritare PowerShell, ekzekutoni komandën e mëposhtme:

  • Get-ADUser -filtri * - eksportimi i listës së përdoruesve të AD

Ky shkarkim nuk është plotësisht informativ dhe nuk i përshtatet të gjithë informacionit të nevojshëm në dritare. Prandaj, le të përpiqemi të ngushtojmë kërkimin dhe të shfaqim vetitë e një përdoruesi specifik të quajtur user1:

  • Get-ADUser -identity user1 -properties * - eksporti i pronave të një përdoruesi specifik

Tani le të përpiqemi të eksportojmë listën e të gjithë përdoruesve me vetitë e tyre në një të jashtme. txt ose csv dosje:

  • Get-ADUser -filtri * -vetitë * | Export-csv -rruga c: \ users.csv -encoding Unicode - eksportimi i përdoruesve në një skedar të veçantë

Do të doja t'i kushtoja vëmendje të veçantë çelësit -kodimi i Unicode... Përdoret në mënyrë që alfabeti cirilik rus, pas eksportimit nga AD, të mund të shfaqet saktë në skedarin e ngarkuar. Për shembull, përmes Microsoft Excel do të shohim pikëpyetje në vend të shkronjave ruse.

Kur shikoni një skedar, të dhënat eksportohen në një rresht të vetëm dhe kështu nuk mund të lexohen. Për ta ndryshuar këtë, duhet të bëjmë sa më poshtë:

I dedikuar përdorimit të PowerShell për administrimin e AD. Si pikënisje, vendosa të marr 10 detyra të zakonshme të administrimit të AD dhe të shikoj se si mund të thjeshtohen duke përdorur PowerShell:

  1. Rivendos fjalëkalimin e përdoruesit
  2. Aktivizoni dhe çaktivizoni llogaritë
  3. Zhblloko llogarinë e përdoruesit
  4. Fshini llogarinë tuaj
  5. Gjeni grupe boshe
  6. Shtoni përdoruesit në grup
  7. Listoni anëtarët e grupit
  8. Gjeni llogaritë e vjetëruara të kompjuterit
  9. Çaktivizo llogarinë e kompjuterit
  10. Gjeni kompjuterë sipas llojit

Për më tepër, autori mban një blog (duke përdorur PowerShell, sigurisht), ju rekomandojmë të hidhni një sy - jdhitsolutions.com/blog. Dhe më e rëndësishmja që mund të merrni nga Twitteri i tij twitter.com/jeffhicks.
Pra, më poshtë është përkthimi i artikullit "10 detyrat kryesore të drejtorisë aktive të zgjidhura me PowerShell".

Menaxhimi i Active Directory (AD) me Windows PowerShell është më i lehtë nga sa mendoni, dhe unë dua t'jua vërtetoj këtë. Ju thjesht mund të merrni skriptet më poshtë dhe t'i përdorni ato për të zgjidhur një numër detyrash të menaxhimit të AD.

Kërkesat

Për të përdorur PowerShell për të menaxhuar AD, duhet të plotësohen disa kërkesa. Unë do të tregoj se si funksionojnë AD cmdlet në një kompjuter Windows 7 si shembull.
Për të përdorur cmdlet-et, duhet të keni një kontrollues domeni Windows Server 2008 R2, ose mund të shkarkoni dhe instaloni shërbimin e portës së menaxhimit të Active Directory në DC-të e vjetra. Lexoni me kujdes dokumentacionin përpara se ta instaloni; Kërkohet rinisja e CD-së.
Nga ana e klientit, shkarkoni dhe instaloni (RSAT) për Windows 7 ose Windows 8. Në Windows 7, do t'ju duhet të hapni Panelet e kontrollit kapitulli Programet dhe zgjidhni Aktivizoni ose çaktivizoni veçoritë e Windows... Gjej Mjetet e administrimit të serverit në distancë dhe zgjeroni seksionin Mjetet e Administrimit të Rolit... Zgjidhni artikujt e duhur për AD DS dhe AD LDS Tools, veçanërisht vini re se artikulli duhet të zgjidhet Moduli Active Directory për Windows PowerShell siç tregohet në figurën 1. (Në Windows 8, të gjitha mjetet zgjidhen si parazgjedhje). Tani jemi gati për të shkuar.

Figura 1 Aktivizimi i veglave AD DS dhe AD LDS

Unë jam identifikuar me një llogari me të drejta administratori të domenit. Shumica e cmdlet-ve që do t'ju tregoj do t'ju lejojnë të specifikoni kredencialet alternative. Gjithsesi, unë rekomandoj të lexoni ndihmën ( Merr ndihme) dhe shembuj që do t'i demonstroj më poshtë.
Filloni një sesion PowerShell dhe importoni modulin:

PS C: \> Import-Module ActiveDirectory

Importimi krijon një PSDrive të ri, por ne nuk do ta përdorim atë. Sidoqoftë, mund të shihni se cilat komanda janë në modulin e importuar.

PS C: \> get-command -module ActiveDirectory

E bukura e këtyre komandave është se nëse mund të përdor një komandë për një objekt AD, atëherë ai mund të përdoret për 10, 100 dhe madje 1000. Le të shohim se si funksionojnë disa nga këto cmdlet.

Detyra 1: Rivendosni fjalëkalimin e përdoruesit

Le të fillojmë me një detyrë tipike: rivendosjen e fjalëkalimit të një përdoruesi. Kjo mund të bëhet lehtësisht dhe thjesht përmes cmdlet Set-ADAccountPassword... Pjesa e ndërlikuar është se fjalëkalimi i ri duhet të cilësohet si një varg i sigurt: një pjesë e tekstit që është e koduar dhe e ruajtur në memorie gjatë sesionit të PowerShell. Së pari, le të krijojmë një variabël me një fjalëkalim të ri:
PS C: \> $ i ri = Read-Host "Fut fjalëkalimin e ri" -AsSecureString

Pastaj, le të fusim një fjalëkalim të ri:

Tani mund ta marrim llogarinë (duke përdorur samAccountEmriËshtë alternativa më e mirë) dhe vendosni një fjalëkalim të ri. Këtu është një shembull për përdoruesin Jack Frost:

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

Fatkeqësisht, ka një gabim me këtë cmdlet: -Passthru, -Po nese, dhe – Konfirmo nuk punon. Nëse preferoni një prerje të shkurtër, provoni sa vijon:

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

Si rezultat, më duhet që Jack të ndryshojë fjalëkalimin herën tjetër që të identifikohem dhe të modifikoj llogarinë duke përdorur Set-ADUser.

PS C: \> Set-ADUser jfrost -ChangePasswordAtLogon $ E vërtetë

Rezultatet e ekzekutimit të cmdlet nuk shkruhen në tastierë. Nëse duhet të bëhet, përdorni – E vërtetë... Por unë mund të zbuloj nëse operacioni ishte i suksesshëm apo jo duke nxjerrë emrin e përdoruesit duke përdorur cmdlet Get-ADUser dhe duke specifikuar pronën Fjalëkalimi ka skaduar siç tregohet në figurën 2.


Oriz. 2. Rezultatet e Get-ADUser Cmdlet cmdlet me vetinë PasswordExpired

Përfundimi: Rivendosja e fjalëkalimit të një përdoruesi duke përdorur PowerShell nuk është aspak e vështirë. E pranoj se rivendosja e fjalëkalimit është gjithashtu e lehtë përmes një hapi. Përdoruesit dhe Kompjuterët e Directory Active konsol Microsoft Management Console (MMC). Por përdorimi i PowerShell është në rregull nëse ju duhet të delegoni një detyrë, nuk dëshironi të vendosni skedarin shtesë të lartpërmendur ose të rivendosni fjalëkalimin tuaj në një proces të madh të automatizuar IT.

Detyra 2: Aktivizoni dhe çaktivizoni llogaritë

Tani le të çaktivizojmë llogarinë. Le të vazhdojmë të punojmë me Jack Frost. Ky kod përdor parametrin -Po nese, të cilën mund ta shihni në cmdlet të tjera që bëjnë ndryshime për të testuar komandën time pa e ekzekutuar atë.

PS C: \> Disable-ADAccount jfrost -whatif Po sikur: Kryerja e operacionit "Set" në Target "CN = Jack Frost, OU = staf, OU = Testim, DC = GLOBOMANTICS, DC = lokal".

Tani le ta çaktivizojmë realisht:

PS C: \> Disable-ADAccount jfrost

Dhe kur të jetë koha për të aktivizuar llogarinë tuaj, cili cmdlet do të na ndihmojë?

PS C: \> Aktivizo-ADAccount jfrost

Këto cmdlet mund të përdoren në një shprehje tubacioni, duke ju lejuar të aktivizoni ose çaktivizoni sa më shumë llogari që dëshironi. Për shembull, ky kod çaktivizon të gjitha llogaritë në departamentin e shitjeve.

PS C: \> get-aduser -filter "departament -eq" sales "" | çaktivizo-akto llogari

Sigurisht, duke shkruar një filtër për Get-ADUser goxha e ndërlikuar, por këtu përdoret parametri -Po nese së bashku me cmdlet Çaktivizo-ADAccount vjen në shpëtim.

Detyra 3: Zhbllokoni llogarinë e përdoruesit

Konsideroni një situatë ku Jack ka mbyllur llogarinë e tij ndërsa përpiqet të fusë një fjalëkalim të ri. Në vend që të përpiqeni të gjeni llogarinë e tij përmes GUI, procedura e zhbllokimit mund të bëhet me një komandë të thjeshtë.

PS C: \> Zhblloko-ADAccount jfrost

cmdlet gjithashtu mbështet parametrat -Po nese dhe -Konfirmo.

Detyra 4: Fshi llogarinë

Nuk ka rëndësi se sa përdorues fshini, është e lehtë të bëhet me cmdlet Hiq-ADUser... Unë nuk dua të heq Jack Frost, por nëse do të doja, do të përdorja kodin si ky:

PS C: \> Remove-ADUser jfrost -whatif Po sikur: Kryerja e operacionit "Remove" në Target "CN = Jack Frost, OU = staf, OU = Testim, DC = GLOBOMANTICS, DC = lokal".

Ose mund të fut shumë përdorues dhe t'i fshij me një komandë të thjeshtë:

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

Kjo komandë do të gjejë dhe heqë çdo llogari të çaktivizuar të punonjësve OU që nuk kanë ndryshuar për 180 ditë ose më shumë.

Detyra 5: Gjetja e grupeve boshe

Menaxhimi i grupit është i pafund dhe i pafalshëm. Ka shumë mënyra për të gjetur grupe boshe. Disa shprehje mund të funksionojnë më mirë se të tjerat, në varësi të organizatës suaj. Kodi më poshtë do të gjejë të gjitha grupet në një domen, duke përfshirë ato të integruara.

PS C: \> get-adgroup -filter * | ku (-Jo ($ _ | merrni-anëtari i grupit të reklamave)) | Zgjidhni Emrin

Nëse keni grupe me qindra anëtarë, atëherë përdorimi i kësaj komande mund të marrë kohë; Get-ADGroup Member kontrollon çdo grup. Nëse mund të kufizoni ose personalizoni, do të jetë më mirë.
Këtu është një qasje tjetër:

PS C: \> get-adgroup -filter "embers -notlike" * "-AND GroupScope -eq" Universal "" -SearchBase "OU = Grupet, OU = Punonjësit, DC = Globomantics, DC = lokale" | Zgjidhni emrin, grupin *

Kjo komandë gjen të gjitha grupet Universale që nuk kanë anëtarësim në OU Groups dhe shfaq disa nga vetitë. Rezultati është paraqitur në Figurën 3.


Oriz. 3. Kërkimi dhe filtrimi i grupeve universale

Detyra 6: Shtimi i përdoruesve në grup

Le të shtojmë Jack Frost në grupin e IT të Çikagos:

PS C: \> add-adgroupnember "chicago IT" -Anëtarët jfrost

Po, është kaq e thjeshtë. Ju gjithashtu mund të shtoni me lehtësi qindra përdorues në grupe, megjithëse kjo është paksa e vështirë për mendimin tim:

PS C: \> Add-ADGroupMember "Punonjësit e Çikagos" -anëtar (get-aduser -filter "city -eq" Chicago "")

Kam përdorur shprehjen me tubacion kllapa për të gjetur të gjithë përdoruesit që kanë një pronë City në Çikago. Kodi i vendosur në kllapa ekzekutohet dhe objektet që rezultojnë i kalohen parametrit –Member. Çdo objekt i personalizuar i shtohet grupit të punonjësve të Çikagos. Nuk ka rëndësi nëse kemi të bëjmë me 5 apo 5000 përdorues, përditësimi i anëtarësimeve në grup zgjat vetëm disa sekonda. Kjo shprehje mund të shkruhet edhe duke përdorur PërÇdo-Objekt, e cila mund të jetë më e përshtatshme:

PS C: \> Get-ADUser -filtri "city -eq" Chicago "" | foreach (Add-ADGroupAnetar "Punonjësit e Çikagos" - Anëtar $ _)

Detyra 7: Shfaqja e një liste të anëtarëve të grupit

Ju mund të dëshironi të dini se kush është në një grup të caktuar. Për shembull, duhet të zbuloni periodikisht se kush është anëtar i grupit të Administratorëve të Domenit:

PS C: \> Get-ADGroup Member "Domain Admins"

Figura 4 tregon rezultatin.


Oriz. 4. Anëtarët e grupit të Domain Admins

cmdlet liston objektin AD për çdo anëtar të grupit. Por çfarë ndodh me grupet e mbivendosur? Grupi im Chicago All Users është një koleksion grupesh të mbivendosur. Për të marrë një listë të të gjitha llogarive, thjesht duhet të përdor parametrin – Rekurzive.

PS C: \> Get-ADGroupMember "Chicago All Users" -Rekursive | Zgjidhni Emri i dalluar

Nëse dëshironi të shkoni në anën tjetër - gjeni cilat grupe i përket përdoruesi - përdorni pronën e përdoruesit Antare i:

PS C: \> get-aduser jfrost -property Memberof | Zgjidhni -ExpandProperty MemberOf CN = NewTest, OU = Grupet, OU = Punonjësit, DC = GLOBOMANTICS, DC = lokale CN = Chicago Test, OU = Grupet, OU = Punonjësit, DC = GLOBOMANTICS, DC = CN lokale = Chicago IT, OU = Grupet, OU = Punonjësit, DC = GLOBOMANTICS, DC = CN lokale = Përdoruesit e Shitjeve të Çikagos, OU = Grupet, OU = Punonjësit, DC = GLOBOMANTICS, DC = lokale

Kam përdorur parametrin -ExpandProperty për të shfaqur emrat Antare i si vargje.

Detyra 8: Gjeni llogaritë e vjetëruara kompjuterike

Më bëhet shpesh kjo pyetje: "Si mund të gjej llogaritë e vjetëruara kompjuterike?" Dhe unë gjithmonë përgjigjem: "Çfarë është e vjetëruar për ju?" Kompanitë ndryshojnë në përkufizimet e tyre se kur një llogari kompjuteri (ose përdoruesi, nuk ka rëndësi) është vjetëruar dhe nuk përdoret më. Sa për mua, i kushtoj vëmendje atyre llogarive për të cilat fjalëkalimet nuk janë ndryshuar për një periudhë të caktuar kohore. Kjo periudhë për mua është 90 ditë - nëse kompjuteri nuk ka ndryshuar fjalëkalimin së bashku me domenin gjatë kësaj periudhe, ka shumë të ngjarë që ai të jetë offline dhe i vjetëruar. Përdoret cmdlet Get-ADComputer:

PS C: \> get-adcomputer -filter "Passwordlastset -lt" 1/1/2012 "" -properties * | Zgjidhni emrin, grupin e fjalëkalimit

Filtri funksionon shkëlqyeshëm me një vlerë të vështirë, por ky kod do të përditësohet për të gjitha llogaritë kompjuterike që nuk kanë ndryshuar fjalëkalimet e tyre që nga 1 janari 2012. Rezultatet janë paraqitur në Figurën 5.


Oriz. 5. Gjeni llogaritë e vjetëruara kompjuterike

Një opsion tjetër: supozoni se jeni të paktën në nivelin funksional të një domeni të Windows 2003. Filtro sipas veçorisë LastLogontime Stamp... Kjo vlerë është numri i intervaleve 100 nanosekonda që nga 1 janari 1601 dhe ruhet në GMT, kështu që puna me këtë vlerë është pak e ndërlikuar:

PS C: \> get-adcomputer -filter "LastlogonTimestamp -gt 0" -properties * | zgjidhni emrin, lastlogontimestamp, @ (Emri = "LastLogon"; Shprehja = (:: FromFileTime ($ _. Lastlogontimestamp))), fjalëkalimilastset | Rendit LastLogonTimeStamp


Oriz. 6. Konvertoni vlerën LastLogonTimeStamp në formatin e zakonshëm

Për të krijuar një filtër, më duhet të konvertoj një datë, për shembull 1 janar 2012, në formatin e duhur. Konvertimi kryhet në FileTime:

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

Tani mund ta përdor këtë variabël në filtrin për Get-ADComputer:

PS C: \> Get-ADComputer -Filter "(lastlogontimestamp -lt $ cutoff) -ose (lastlogontimestamp -jo si" * ")" -properti * | Zgjidhni Emri, LastlogonTimestamp, PasswordLastSet

Kodi i mësipërm gjen të njëjtët kompjuterë të paraqitur në Figurën 5.

Detyra 9: Çaktivizoni llogarinë e kompjuterit

Ndoshta kur gjeni llogari joaktive ose të vjetruara, dëshironi t'i çaktivizoni ato. Kjo është mjaft e lehtë për t'u bërë. Ne do të përdorim të njëjtin cmdlet që kemi përdorur me llogaritë e përdoruesve. Mund ta rafinoni duke përdorur samAccountEmri llogari.

PS C: \> Disable-ADAccount -Identity "chi-srv01 $" -whatif Po sikur: Kryerja e operacionit "Set" në Target "CN = CHI-SRV01, CN = Kompjuterë, DC = GLOBOMANTICS, DC = lokale".

Ose duke përdorur një shprehje me tubacion:

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

Mund të përdor gjithashtu kodin tim për të gjetur llogari të vjetruara dhe për t'i çaktivizuar të gjitha:

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

Detyra 10: Gjeni kompjuterët sipas llojit

Më bëhet gjithashtu shpesh pyetja se si të gjej llogaritë e kompjuterit sipas llojit, siç janë serverët ose stacionet e punës. Kjo kërkon një sasi të caktuar kreativiteti nga ana juaj. Nuk ka asgjë në AD që e dallon serverin nga klienti, përveç ndoshta OS. Nëse kompjuteri juaj përdor Windows Server 2008, ka disa hapa shtesë për të ndërmarrë.
Së pari, ju duhet të merrni një listë të OS, dhe më pas ne filtrojmë llogaritë sipas sistemit operativ të disponueshëm.

PS C: \> Get-ADComputer -Filter * -Properties OperatingSystem | Zgjidhni OperatingSystem -unike | Rendit sistemin operativ

Rezultatet janë paraqitur në Figurën 7.


Oriz. 7. Ekstraktoni listën e OS

Unë dua të gjej të gjithë kompjuterët që kanë një server OS:

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

Rezultatet janë paraqitur në Figurën 8.

Ashtu si me cmdlet të tjera AD Get, mund të personalizoni parametrat e kërkimit tuaj dhe të kufizoni pyetjen në OU specifike, nëse është e nevojshme. Të gjitha shprehjet që kam treguar mund të integrohen në shprehje të mëdha PowerShell. Për shembull, ju mund të renditni, gruponi, aplikoni filtra, eksportoni në CSV ose krijoni dhe dërgoni me email raporte HTML - të gjitha nga PowerShell! Në këtë rast, nuk keni pse të shkruani një kërcitje të vetme.
Këtu është një bonus për ju: raporti i moshës së fjalëkalimit të përdoruesit i ruajtur në një skedar HTML:

PS C: \> Get-ADUser -Filter "Enabled -eq" E vërtetë "-AND PasswordNeverExpires -eq" False "" -Properties PasswordLastSet, PasswordNeverExpires, PasswordExpires | Zgjidh DistinguishedName, Name, pass *, @ (Emri = "PasswordAge"; Shprehje = ((Get-Date) - $ _. PasswordLastSet) | Rendit PasswordMosha -Descending | ConvertTo-Html -Title "(! LANG: Password Age Report" | Out-File c:\Work\pwage.htm !}

Ndërsa kjo shprehje mund të duket pak frikësuese, me pak njohuri për PowerShell është e lehtë për t'u përdorur. Dhe vetëm këshilla e fundit mbetet: si të përkufizohet një pronë me porosi të quajtur Mosha e fjalëkalimit... Vlera përfaqëson intervalin midis sot dhe veçorisë PasswordLastSet. Pastaj i rendit rezultatet për pronën time të re. Figura 9 tregon daljen për domenin tim të vogël të testimit.

Përditëso:
Postimi përmban përkthimin e artikullit në portal

Përdoret për të krijuar, modifikuar dhe fshirë objektet e katalogut. Përdoruesi gjithashtu mund të përdorë komandën ldifde për të zgjeruar skemën, për të eksportuar informacionin e përdoruesve dhe grupit të Active Directory në aplikacione ose shërbime të tjera dhe për të mbushur Modalitetin e Aplikimit të Drejtorisë Active (ADAM) me të dhëna nga shërbime të tjera të drejtorisë.

Sintaksë

ldifde [-i] [-f Emri i skedarit] [-s Emri i serverit] [-c rreshti 1 rreshti 2] [-v] [-j rrugë] [-t numri_port] [-d DN_bazë] [-r LDAP_filtri] [-fq Rajon] [-l LDAP_lista_atributesh] [-o LDAP_lista_atributesh] [-g] [-m] [-n] [-k] [-a ] [-b ] [-? ]

Parametrat

-i Përcakton mënyrën e importit. Nëse parametri nuk është specifikuar, mënyra e eksportit përdoret si parazgjedhje. -fEmri i skedarit Specifikon emrin e skedarit të importit ose eksportit. -sEmri i serverit Përcakton kompjuterin në të cilin duhet të kryhet operacioni i importit ose eksportit. Si parazgjedhje programi ldifde do të funksionojë në kompjuterin në të cilin ldifde instaluar. -crreshti 1 rreshti 2 Zëvendëson të gjitha dukuritë vargjet 1 përmbajtjen vargjet 2... Zakonisht përdoret kur importoni të dhëna nga një domen në tjetrin, dhe në të njëjtën kohë është e nevojshme të zëvendësoni emrin e dalluar të domenit eksportues ( vargu 1), emri i domenit importues ( vargu 2). -v Aktivizon modalitetin e regjistrimit me fjalë. -jrrugë Përcakton vendndodhjen e skedarit të regjistrit. Parazgjedhja është rruga aktuale. -tnumri_port Specifikon numrin e portës së Protokollit të Qasjes në Drejtorinë e lehtë (LDAP). Porta e paracaktuar LDAP është 389. Porta globale e katalogut është 3268. -dDN_bazë Përcakton emrin e dalluar të bazës së kërkimit për eksportimin e të dhënave. -rFiltri LDAP Krijon një filtër kërkimi LDAP për eksportimin e të dhënave. Për shembull, duke përdorur filtrin e mëposhtëm, të gjithë përdoruesit me një emër të mesëm specifik eksportohen: csvde -r (dhe (objectClass =Përdoruesi) (sn =Mbiemri)) -fqRajon Përcakton shtrirjen e kërkimit. Parametrat e fushës së kërkimit janë Baza, OneLevel dhe Nënpemë. -lLDAP_lista_atributesh Përcakton listën e atributeve për t'u kthyer në rezultatet e një kërkese eksporti. Nëse ky parametër hiqet, të gjitha atributet kthehen. -oLDAP_lista_atributesh Përcakton një listë të atributeve që duhen hequr nga rezultatet e një pyetjeje eksporti. Në mënyrë tipike, ky parametër përdoret kur eksportoni objekte nga Active Directory dhe më pas i importoni ato në një direktori tjetër që përputhet me LDAP. Nëse ndonjë atribut nuk mbështetet nga një drejtori tjetër, ato mund të përjashtohen nga grupi i rezultateve duke përdorur këtë parametër. -g Përjashton kërkimet e faqeve. -m Heqja e atributeve që nuk mund të shkruhen, si p.sh ObjectGUID dhe objektSID. -n Hiqni eksportin e vlerave binare. -k Injoron gabimet gjatë operacionit të importit dhe vazhdon përpunimin. Më poshtë është një listë e plotë e gabimeve të injoruara:

  • objekti është tashmë një anëtar i grupit;
  • shkelje e një klase objekti (që do të thotë se klasa e specifikuar e objektit nuk ekziston) nëse objekti i importuar nuk ka atribute të tjera;
  • objekti tashmë ekziston;
  • shkelje e kufizimit;
  • atributi ose vlera tashmë ekziston;
  • nuk ekziston asnjë objekt i tillë.
-afjalëkalimi i emrit të dalluar të përdoruesit Specifikon ekzekutimin e një komande duke përdorur të specifikuarin emri i dalluar i përdoruesit dhe fjalëkalimin -b. -bfjalëkalimi i domenit të emrit të përdoruesit Përcakton një komandë që do të ekzekutohet duke përdorur të specifikuarin emri i përdoruesit, domeni dhe fjalëkalimi... Si parazgjedhje, komanda do të ekzekutohet duke përdorur kredencialet e përdoruesit që aktualisht është i kyçur në rrjet. Nuk mund të përdoret me parametër -a. -? Shfaq menunë e komandës.

Vërejtje

  • Me parametër -c mund të përdorni konstante #schemaNamingContext dhe #configurationNamingContext në vend të emrave të dalluar të seksionit të drejtorisë së skemës dhe seksionit të drejtorisë së konfigurimit.
  • Kur krijoni një skedar importi për një komandë ldifde, përdorni vlerën ndryshim Lloji për të përcaktuar llojin e ndryshimeve të përfshira në skedarin e importit. vlerat ndryshim Lloji janë paraqitur në tabelën e mëposhtme.

Më poshtë është një shembull i një skedari importues LDAP në formatin LDIF që përdor vlerën shtoni:
DN: CN =i zgjedhur_përdoruesi, DC =emri i domenit
lloji i ndryshimit: shtoni
CN: i zgjedhur_përdoruesi
përshkrim:përshkrimi i skedarit
Klasa e objektit: përdorues
Klasa e objektit: i zgjedhur_përdoruesi

Shembuj të

Për të marrë vetëm emrin e dalluar, emrin e zakonshëm, emrin, mbiemrin dhe numrin e telefonit të objekteve të kthyera, shkruani:
-l emër_i dalluar, CN, emri, SN, telefonit
Për të përjashtuar një identifikues unik globalisht (GUID) për një objekt, futni:
-o kur_krijohet, kur_ndryshuar, Objekti_udhëzues

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

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" | ForÇ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