Si të konfiguroni telefonat inteligjentë dhe PC. Portali informativ
  • në shtëpi
  • Hekuri
  • Skript se si të merrni të gjitha karakteristikat e një llogarie domeni. Excel në vend të PowerShell: pyetje për AD dhe raportet e sistemit "në gju"

Skript se si të merrni të gjitha karakteristikat e një llogarie domeni. Excel në vend të PowerShell: pyetje për AD dhe raportet e sistemit "në gju"

Mirëdita, të dashur lexues dhe abonentë, ne vazhdojmë të studiojmë aftësitë e Powershell dhe Active Directory. Siç e mbani mend, të gjitha llogaritë e saj të përdoruesve dhe kompjuterëve ndodhen në bazën e të dhënave NTDS.dit, gjithçka është e shkëlqyer dhe e centralizuar. Kur një kompani ka më shumë se një administrator sistemi, mund të lindë një situatë ku grumbullohen mbeturina dhe kredenciale të panevojshme. Ne të gjithë jemi njerëz dhe mund të harrojmë disa gjëra, dhe në disa momente mund të shpërqendrohemi, gjë që gjithashtu do të çojë në harresë informacion i rendesishem. Dhe arrijmë në përfundimin se Drejtoria Actvie nuk grumbullohet përdorues aktivë(të shkrepura ose të harruara), në çdo rast, një administrator i mirë i sistemit duhet t'i identifikojë, t'i çaktivizojë dhe më pas t'i fshijë nëse dëshironi, gjë që do të bëjmë ne.

Nëpërmjet snap-in ADUC

Herën e fundit ju dhashë një shembull të përdorimit të snap-in-it të Active Directory Users and Computers, nëpërmjet të cilit ne kërkuam kompjuterë të humbur në rrjetin lokal që nuk ishin shfaqur për një muaj. Tani do të bëjmë të njëjtën gjë me llogaritë e përdoruesve. Unë kam AD në Windows Server 2012 R2, hapni ADUC, për ta bërë këtë, shtypni WIN+R dhe futni dsa.msc.

Në formularin e kërkesës që hapet, shkruani:

  • Kërko emrin > për mua këta janë përdorues të humbur
  • Përshkrimi nëse është e nevojshme
  • Kërkoni rrënjë > këtu mund të lini të gjithë domenin, ose ta specifikoni në OU-në e dëshiruar

Pastaj klikoni butonin kërkesë.

Në skedën e përdoruesve shohim artikullin "Numri i ditëve që nga viti identifikimi i fundit në sistem" kam vendosur 60 ditë për shembull.

Si rezultat, do të merrni listën që ju nevojitet për llogaritë joaktive të punonjësve.

Nëpërmjet snap-in powershell

E njëjta gjë mund të bëhet përmes Powershell. Unë do t'ju jap menjëherë kodin, detyra e të cilit është të kërkoni përdoruesit joaktivë, për këtë zgjodha një periudhë prej 45 ditësh, duke çaktivizuar të dhënat e përdoruesit dhe duke i zhvendosur ato në një OU të caktuar posaçërisht.

$date_with_offset= (Get-Date).AddDays(-45)
$users = Get-ADUser -Properties LastLogonDate -Filter (LastLogonDate -lt $date_with_offset ) | Rendit Data e Fundit Logon
foreach ($user në $users) (set-aduser $user -enabled $false; move-adobject -identity $user -targetpath "ou=Fired,ou=Moscow L. users,ou=Location,dc=msk,dc= contoso,dc=com")
Get-ADUser -Properties LastLogonDate -Filter (LastLogonDate -lt $date_with_offset ) | Rendit Data e Fundit Logon | FT Emri, LastLogonDate -AutoSize | Jashtë skedarit c:\Script\users.txt

  • Në rreshtin e parë ju deklaroni një variabël në të cilin vendosni termin e kërkimit
  • Krijoni një variabël dhe bëni një përzgjedhje bazuar në kohën e fundit të hyrjes
  • Lëvizja e përdoruesve

  • Bërja e një raporti në një dosje

Gjëra më të dobishme për të punuar me përdoruesin. Përpara se të përdorni komandat e mëposhtme, duhet të ngarkoni modulin Active Directory nëpërmjet komandës

Get-Help Get-ADUser

Në komentet e artikullit të mëparshëm, ne kujtuam 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 sistemit operativ në organizatën tuaj nëse nuk keni tashmë diçka si Microsoft SCOM. Epo, ose thjesht ngrohuni dhe hiqni mendjen nga skenarët.


Sigurisht, ju mund t'i merrni të dhënat si në shembujt më poshtë fjalë për fjalë me një rresht në PowerShell. Por, së pari, PowerShell është shumë i mërzitshëm, dhe së dyti, Excel mund të përditësojë në mënyrë dinamike të dhënat - dokumentet që rezultojnë mund të publikohen në internet dhe të harrohen për përditësimin e tyre.

Për të punuar me të dhënat, do të përdor mekanizmin Power Query. Për Office 2010 dhe 2013 ju do të duhet të instaloni një plugin Microsoft Office 2016 tashmë e ka këtë modul të integruar. Fatkeqësisht, botimi standard nuk është i mjaftueshëm për ne, do të na duhet Professional.


Vetë mekanizmi është krijuar për të marrë dhe përpunuar të dhëna nga burime të ndryshme - 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ë shikoj disa shembuj të përdorimit të Power Query për të marrë të dhëna nga Active Directory.

Ngrohja: Le të shohim kur përdoruesit tanë janë identifikuar

Vetë kërkesa për bazën e të dhënave të domenit krijohet në skedën “Data ― Kërkesë e re ― Nga burime të tjera ― Nga Active Directory”.



Specifikoni burimin e të dhënave.


Do t'ju duhet të zgjidhni një emër domeni dhe të jepni informacionin e nevojshëm të lidhjes. Tjetra, zgjidhni llojin e objekteve, në këtë shembull - përdorues. Në të djathtë, në dritaren e shikimit, pyetja tashmë po ekzekutohet dhe shfaqet pamje paraprake të dhëna.



Ne përgatisim një kërkesë dhe admirojmë pamjen paraprake.


Ju duhet ta përgatisni kërkesën paraprakisht duke klikuar butonin "redakto" dhe duke zgjedhur kolonat e kërkuara. Në thelb, këto kolona janë klasa secila prej tyre përmban një sërë atributesh specifike të një objekti të Drejtorisë Active, me përjashtim të kolonës kryesore Emri i shfaqur, e cila në vetvete është një atribut. Do të përqendrohem 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" - një ikonë me dy shigjeta në kokën e kolonës:

  • Klasa përdorues zgjerohet duke zgjedhur lastLogonTimestamp Dhe UserAccountControl;
  • V person le të zgjedhim numër telefoni;
  • V kryekurKrijohet;
  • dhe ne sigurimi KryesorSamAccountEmri.


Ne zgjerojmë kërkesën.


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



Aplikimi i një filtri.


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

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


Rezultati është një pjatë që ka nevojë vetëm për pak prekje përfundimtare. Për shembull, riemërtoni kolonat në diçka më të lexueshme. Dhe personalizoni përditësim automatik të dhëna.


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 përditësimit 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ë regjistruar në sistem dhe kur.


Kodi i kërkesës në gjuhën "M" është nën spoiler.

le Source = ActiveDirectory.Domains("domain.ru"), domain.ru = Source()[#"Object Kategories"], user1 = domain.ru(), #"Remote Columns" = Table.RemoveColumns(user1,( "Person organizativ", "shadowAccount", "posixAccount", "msExchOmaUser", "msExchBaseClass", "msExchIMRecipient", "msExchCertificateInformation", "msExchMultiMediaUser", "msExchMailStorage", "msExchMailStorage", "msExchCustomRecipient", "disExchCustomRecipient" #"Expanded element securityPrincipal" = Table.ExpandRecordColumn(#"Kollonat e hequra", "securityPrincipal", ("sAMAccountName"), ("sAMAccountName")), #"Elementi i zgjeruar lart" = Table.ExpandRecordColumnedinal(#"E ", "lart", ("kur u krijua"), ("kur u krijua")), #"person i elementit të zgjeruar" = Table.ExpandRecordColumn(#"Elementi i zgjeruar sipër", "person", ("Numri i telefonit"), ("Numri i telefonit" ")), #"Përdoruesi i elementit të zgjeruar" = Tabela.ExpandRecordColumn(#"Personi i elementit të zgjeruar", "përdoruesi", ("lastLogonTimestamp", "userAccountControl"), ("lastLogonTimestamp", "userAccountControl")), #"Rreshtat me filtrin e aplikuar" = Tabela.SelectRows(#"Elementi i zgjeruar i përdoruesit", secili ( = 512 ose = 66048)), #"Lloji i ndryshuar" = Table.TransformColumnTypes(#"Rreshtat me filtër të aplikuar",(("LastLogonTimestamp", shkruani datatime))), #"Remoted columns1" = Tabela.RemoveColumns(#"Chand type",("userAccountControl")) in #"Remoted kolons1"

Ne krijojmë Libri i adresave, ose çfarë të bëni kur portali i korporatës jo miqësore me AD

Një variant tjetër duke përdorur Excel në lidhje me Active Directory - ky ë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 domeni është në rregull.


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. Le të fshijmë 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 departamenteve.


Tani nga linja CN=Emri i përdoruesit, OU=Departamenti i Kontabilitetit, OU=Divizionet, 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ë të përdorni kufijtë në skedën Transform.



Nxjerrja e tekstit.


Unë përdor si përcaktues OU= Dhe ,OU=. Në parim mjafton një presje, por po e luaj të sigurt.



Fut kufijtë.


Tani, duke përdorur filtrin, mund të shkëputni ato të panevojshme OU, si përdoruesit e bllokuar dhe të ndërtuara, konfiguroni renditjen dhe ngarkoni të dhënat në tabelë.



Pamje e tabelës përmbledhëse.

Raport i shpejtë mbi përbërjen e stacioneve të punës, pa futur agjentë apo përgatitje 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 këtë herë në navigator do të zgjedhim kompjuter.



Bëjmë një kërkesë për objektin kompjuterik.


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 le të zgjedhim kurKrijohet.


Kërkesë e avancuar.


Nëse dëshironi, mund të bëni një raport vetëm në sistemet operative të serverit. Për shembull, filtro sipas atributit OperativeSystem ose OperatingSystemVersion. Unë nuk do ta bëj këtë, por do të korrigjoj shfaqjen e kohës së krijimit - jam i interesuar vetëm për vitin. Për ta bërë këtë, në skedën "Konvertimi", zgjidhni kolonën që na nevojitet dhe zgjidhni "Viti" në menunë "Data".



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


Tani gjithçka që mbetet është të fshini kolonën e emrit të shfaqur 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ë krijojmë një tabelë kryesore në skedën "Fut" - " Tabela strumbullar" 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 gjithçka që mbetet është të personalizoni dizajnin sipas shijes tuaj dhe të admironi rezultatin:



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


Nëse dëshironi, mund të shtoni një tabelë përmbledhëse, gjithashtu në skedën "Fut". Në "Kategorinë" (ose në "Rreshtat", për shije) shtoni Sistemi operativ, për të dhënat - cn. Në skedën "Dizajn", ju mund të zgjidhni llojin e grafikut që ju pëlqen.



Grafik me byrek.


Tani është qartë e dukshme 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.


Kodi i kërkesës është nën spoiler.

le Source = ActiveDirectory.Domains("domain.ru"), domain.ru = Source()[#"Object Kategories"], computer1 = domain.ru(), #"Remote Columns" = Table.RemoveColumns(kompjuter1,( "user", "organizationalPerson", "person")), #"Kollona të tjera të hequra" = Tabela.SelectColumns(#"Kollonat e larguara",("displayName", "kompjuter", "lart")), #"Zgjero artikullin kompjuter" = Table.ExpandRecordColumn(#"Kollona të tjera në distancë", "kompjuter", ("cn", "operatingSystem", "operatingSystemServicePack", "operatingSystemVersion"), ("cn", "operatingSystem", "operatingSystemServicePack", " OperatingSystemVersion")), #"Extended Top" = Table.ExpandRecordColumn(#"Kompjuter i zgjeruar", "lart", ("kurKrijohet"), ("kurKrijohet")), #"Viti i Ekstraktuar" = Tabela.TransformColumns( #" Elementi i zgjeruar sipër",(("kur u krijua", Data.Viti))), #"Kollonat e larguara1" = Tabela.RemoveColumns(#"Viti i nxjerrë",("Emri i shfaqur")) në #"Kollonat e larguara1"

Shto etiketa

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

  1. Rivendos fjalëkalimin e përdoruesit
  2. Aktivizoni dhe çaktivizoni llogaritë
  3. Zhbllokoni llogarinë e përdoruesit
  4. Fshini llogarinë tuaj
  5. Gjeni grupe boshe
  6. Shtoni përdoruesit në një grup
  7. Listoni anëtarët e grupit
  8. Gjeni llogaritë e vjetëruara kompjuterike
  9. Çaktivizoni një llogari kompjuteri
  10. Gjeni kompjuterët 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 ju mund të merrni informacionin më të përditësuar 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".

Kontroll aktiv Drejtoria (AD) duke përdorur Windows PowerShell është më e lehtë nga sa mendoni, dhe unë dua t'jua vërtetoj atë. 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ësoni disa kërkesa. Unë do të demonstroj se si funksionojnë cmdlet AD duke përdorur 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. Ju lutemi lexoni me kujdes dokumentacionin përpara instalimit; 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 Karakteristikat e Windows(Aktivizo ose çaktivizo veçoritë e Windows). Gjej Serveri në distancë Mjetet e Administrimit 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 Active Directory Moduli 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ë punuar.

Fig.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. Në çdo rast, 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ë të disponueshme 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ë në një objekt AD, atëherë ai mund të përdoret në 10, 100, madje edhe 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. Ju mund ta bëni këtë lehtësisht dhe thjesht duke përdorur një cmdlet Set-ADAccountPassword. Pjesa e ndërlikuar është ajo Fjalëkalim i ri duhet të cilësohet si një varg i mbrojtur: një pjesë teksti që është e koduar dhe e ruajtur në memorie për kohëzgjatjen e një sesioni PowerShell. Së pari, le të krijojmë një variabël me fjalëkalimin e ri:
PS C:\> $new=Read-Host "Fut fjalëkalimin e ri" -AsSecureString

Pastaj futni një fjalëkalim të ri:

Tani mund të nxjerrim llogarinë (duke përdorur emri i llogarisë– opsioni më i 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ë shkurtore, provoni këtë:

PS C:\> Set-ADAccountPassword jfrost -NewPassword (ConvertTo-SecureString -AsPlainText -String "P@ssw0rd1z3" -force)

Përfundoj që i duhet Jack që të ndryshojë fjalëkalimin e tij herën tjetër kur ai regjistrohet, kështu që unë modifikoj llogarinë duke përdorur Set-ADUser.

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

Rezultatet e ekzekutimit të cmdlet nuk shkruhen në tastierë. Nëse kjo duhet të bëhet, përdorni – E vërtetë. Por unë mund të zbuloj nëse operacioni ishte i suksesshëm apo jo duke marrë 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 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 snap-in-it Përdoruesit dhe kompjuterët e Active Directory konsolat Menaxhimi i Microsoft Konsola (MMC). Por duke përdorur PowerShell I përshtatshëm nëse ju duhet të delegoni një detyrë, nuk dëshironi të vendosni skedarin shtesë të sipërpërmendur ose po rivendosni një fjalëkalim si pjesë e një procesi 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ë cilin mund ta gjeni në komadlet 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=staff,OU=Testing,DC=GLOBOMANTICS,DC=local".

Tani le ta çaktivizojmë realisht:

PS C:\> Disable-ADAAccount jfrost

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

PS C:\>Aktivizo-ADAAccount 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 do të çaktivizojë të gjitha llogaritë në departamentin e shitjeve

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

Sigurisht, shkruani një filtër për Get-ADUser mjaft e komplikuar, por këtu përdoret parametri -Po nese së bashku me cmdlet Disable-ADAccount vjen në shpëtim.

Detyra 3: Zhbllokoni llogarinë e përdoruesit

Konsideroni një situatë ku Jack bllokoi llogarinë e tij ndërsa përpiqej të fuste 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 duke përdorur një komandë të thjeshtë.

PS C:\> Zhbllokoni-AAA llogarinë jfrost

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

Detyra 4: Fshi llogarinë

Nuk ka rëndësi se sa përdorues hiqni - është e lehtë të bëhet duke përdorur 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=staff,OU=Testing,DC=GLOBOMANTICS,DC=local".

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 fshijë çdo llogari të paaftë të punonjësve OU që nuk janë modifikuar për 180 ditë ose më shumë.

Detyra 5: Gjetja e grupeve boshe

Menaxhimi i grupeve është një detyrë e pafund dhe e pafalshme. 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ë domen, duke përfshirë ato të integruara.

PS C:\> get-adgroup -filter * | ku (-Jo ($_ | get-adgroupember)) | Zgjidhni Emrin

Nëse keni grupe me qindra anëtarë, atëherë përdorimi i kësaj komande mund të marrë shumë kohë; Get-ADGroup Member kontrollon secilin 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 "anëtarët -jo si "*" -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ë Grupet OU dhe shfaq disa nga vetitë. Rezultati është paraqitur në Figurën 3.


Oriz. 3. Kërkoni dhe filtro grupet universale

Detyra 6: Shtimi i përdoruesve në një grup

Le të shtojmë Jack Frost në grupin e Chicago IT:

PS C:\> add-adgroupember "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 më duket pak e sikletshme:

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ë pronën e qytetit në Çikago. Kodi në kllapa ekzekutohet dhe objektet që rezultojnë kalohen në parametrin –Member. Çdo objekt përdoruesi shtohet në grupin e 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çfarë mund të jetë më e përshtatshme:

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

Detyra 7: Rendisni anëtarët e 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 "Admins Domain"

Figura 4 tregon rezultatin.


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

cmdlet shfaq objektin AD për çdo anëtar të grupit. Çfarë duhet bërë me grupet e mbivendosura? 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 doni të shkoni në anën tjetër - gjeni se në cilat grupe është një përdorues - përdorni veçorinë e përdoruesit Anetar i:

PS C:\> get-aduser jfrost -property Memberof | Zgjidh -ExpandProperty MemberOf CN=NewTest,OU=Grupet,OU=Punonjësit,DC=GLOBOMANTICS,DC=local CN=Chicago Test,OU=Grupet,OU=Punonjësit,DC=GLOBOMANTICS,DC=lokal CN=Chicago IT,OU= Grupet,OU=Punonjës, DC=GLOBOMANTICS,DC=lokal CN=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 Anetar i si vija.

Detyra 8: Gjeni llogaritë e vjetëruara kompjuterike

Më bëjnë shumë këtë pyetje: "Si mund t'i gjej llogaritë e vjetruara kompjuterike?" Dhe unë gjithmonë përgjigjem: "Çfarë është e vjetëruar për ju?" Kompanitë kanë përkufizime të ndryshme se kur një llogari kompjuteri (ose llogari përdoruesi, nuk ka rëndësi) konsiderohet e vjetëruar dhe nuk mund të përdoret më. Sa për mua, i kushtoj vëmendje atyre llogarive, fjalëkalimet e të cilave nuk janë ndryshuar periudhë të caktuar koha. Kjo periudhë për mua është 90 ditë - nëse kompjuteri nuk e 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. Cmdlet i përdorur Get-ADComputer:

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

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ë tjetër opsion: le të supozojmë se jeni të paktën në nivelin funksional Domeni i Windows 2003. Filtro sipas pronës 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, @(Name="LastLogon";Shprehje=(::FromFileTime ($_.Lastlogontimestamp))),passwordlastset | Rendit LastLogonTimeStamp


Oriz. 6. Konvertoni vlerën LastLogonTimeStamp në një format të njohur

Për të krijuar një filtër, më duhet të konvertoj datën, 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ë filtër për të Get-ADComputer:

PS C:\> Get-ADComputer -Filter "(lastlogontimestamp -lt $cutoff) -ose (lastlogontimestamp -jo si "*")" -properti * | Zgjidhni Emri,Vendosja Kohore e Fundit,FjalëkalimiLastSet

Kodi i mësipërm gjen të njëjtët kompjuterë që u treguan në Figurën 5.

Detyra 9: Çaktivizoni llogarinë e kompjuterit

Ndoshta kur të gjeni llogari joaktive ose të vjetruara, do të 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 për të punuar me llogaritë e përdoruesve. Mund ta sqaroni duke përdorur emri i llogarisë 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=local".

Ose duke përdorur një shprehje tubacioni:

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

Unë gjithashtu mund të përdor 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 *| Disable-ADAccount

Detyra 10: Gjeni kompjuterët sipas llojit

Gjithashtu më pyesin shpesh se si t'i gjej llogaritë e kompjuterit sipas llojit, të tilla si serverët ose stacionet e punës. Kjo kërkon njëfarë kreativiteti nga ana juaj. Nuk ka asgjë në AD që e dallon një server nga një klient, përveç ndoshta OS. Nëse kompjuteri juaj po ekzekuton Windows Server 2008, do t'ju duhet të bëni disa hapa shtesë.
Së pari, ju duhet të merrni një listë të sistemeve operative, dhe më pas ne filtrojmë llogaritë sipas sistemeve operative të disponueshme.

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

Rezultatet janë paraqitur në Figurën 7.


Oriz. 7. Merrni listën e OS

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

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

Rezultatet janë paraqitur në Figurën 8.

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

PS C:\> Get-ADUser -Filter "Enabled -eq "True" -DHE PasswordNeverExpires -eq "False"" -Properties PasswordLastSet,PasswordNeverExpires,PasswordExpires | Zgjidh DistinguishedName,Name,pass*,@(Name="PasswordAge"; Expression=((Get-Date)-$_.PasswordLastSet)) |rendit PasswordMosha -Zbritëse | ConvertTo-Html -Title "Fjalëkalimi Raporti i moshës" | Out-File c:\Work\pwage.htm !}

Edhe pse kjo shprehje mund të duket pak frikësuese, është e lehtë për t'u përdorur me njohuri minimale të PowerShell. Dhe vetëm një këshillë e fundit ka mbetur: si të përkufizoni një pronë me porosi të quajtur Mosha e fjalëkalimit. Vlera përfaqëson hendekun 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 një përkthim të artikullit në portal

Sot do të përpiqemi të shkarkojmë një listë të të gjithë përdoruesve në një skedar të veçantë nga Active Directory. Ndihmësi ynë kryesor në këtë çështje do të jetë PowerShell. Gjë është se Microsoft fillimisht kishte planifikuar konsol komandimi PowerShell si mjeti kryesor për menaxhimin e komponentëve të serverit Windows. Dhe sot, kur tashmë kemi versionin 2.0, sipas në përgjithësi, është me të vërtetë 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 lloje te ndryshme skriptet ose shërbimet. Duke filluar nga sot versionet e Windows Serveri 2008 R2, ne mund të punojmë me AD përmes PowerShell. Me ardhjen e PowerShell 2.0, përdoret për të bashkëvepruar me Active Directory modul i veçantë Moduli Active Directory për Windows PowerShell, e cila përmban listën e nevojshme të cmdlet-ve. Për detyrat tona ne do të përdorim komandën Get-ADUser.

Pra, varësisht se cili është nën kontroll sistemi operativ ne do të lëshojmë tastierën PowerShell, do të na duhet të kryejmë "hapa përgatitor".

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

  • Import-Moduli i drejtorisë aktive – komanda për të importuar një modul në AD

Për versionet e sistemit operativ nga 2012 dhe më lart, këtë modul aktivizuar tashmë si parazgjedhje.

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

Vlen të theksohet 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, duhet të ekzekutoni komandën e mëposhtme:

  • Get-ADUser -filtri * – eksportoni një listë të përdoruesve të AD

Ky shkarkim nuk është plotësisht informativ dhe nuk i përshtatet gjithçkaje në dritare. informacionin e nevojshëm. Prandaj, le të përpiqemi të ngushtojmë kërkimin dhe të shfaqim vetitë përdorues specifik me emrin user1:

  • Get-ADUser -identity user1 -properties * – eksportoni vetitë e 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ë jashtëm txt ose csv dosje:

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

Do të doja t'i kushtoja vëmendje të veçantë çelësit - kodimi i Unicode. Ai shërben për të siguruar 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 dhe për këtë arsye nuk janë të lexueshme. Për ta ndryshuar këtë duhet të bëjmë sa më poshtë:

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 në shembuj të thjeshtë, ne do t'ju tregojmë aftësitë e PowerShell që mund t'i përdorni për të marrë një shumëllojshmëri informacionesh 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ërdorni mjete të ndryshme: konsolën ADUC (përfshirë), një mjet, etj. Zgjedhja e mjetit zakonisht bazohej në detyrën në fjalë dhe aftësitë programuese të administratorit.

PowerShell 2.0 prezantoi 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 objektet e drejtorisë AD. cmdlet përdoret për të marrë informacion rreth përdoruesve të domenit të Active Directory dhe vetive të tyre 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 cmdlet PowerShell Get-ADUser për të marrë informacione se kur është ndryshuar për herë të fundit fjalëkalimi i një përdoruesi dhe kur skadon.

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

Import-Moduli i drejtorisë aktive

Këshilla. Në Windows Server 2012 dhe më lart, mund ta kapërceni këtë artikull, që nga moduli PowerShell Active Drejtoria është e lidhur si parazgjedhje.

Në sistemet operative të klientit (Windows 10 për shembull), 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).

Një listë e plotë e të gjitha argumenteve cmdlet Get-ADUser mund të merret si më poshtë:

Ndihmoni Get-ADUser

Për të shfaqur një listë të të gjitha llogarive të 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, vetëm disa 10 bazë nga më shumë se 120 atributet dhe vetitë e llogarive të përdoruesve shfaqen (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ë na duhen. Ne jemi të interesuar për atributet:

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

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 do të skadojë. 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, përdorni parametrin Baza e Kërkimit:

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

Rezultati i 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 do të eksportohet me lehtësi në Excel në të ardhmen (përveç kësaj duke përdorur lloj-objekt Le ta renditim tabelën sipas kolonës PasswordLastSet dhe gjithashtu të shtojmë një kusht ku- emri i përdoruesit duhet të përmbajë vargun "Dmitry"):

Get-ADUser -filtri * -vetitë PasswordExpired, PasswordLastSet, PasswordNeverExpires | ku ($_.emri –si “*Dmitry*”) | sort-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ë nevojshëm Përdorues aktivë Drejtoria.

Për të marrë një listë të llogarive të përdoruesve të AD bazuar në një karakteristikë specifike, përdorni parametrin –Filter. Si argumente për këtë parametër, mund të specifikoni vlerën e disa atributeve të përdoruesve të Active Directory, të cilat do të bëjnë që cmdlet Get-ADUser të aplikohet tek përdoruesit që përputhen me kriteret e filtrit.

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

Filtri Get-ADUser (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-Objekt SamAccountEmri,Emri,Mbiemri,Emri i dhënë | Format-Tabela

Lista e llogarive me i skaduar veprimet e fjalëkalimit:

Get-ADUser -filtri (Enabled -eq $True) -properties fjalëkalimi Skaduar | ku ($_.Fjalëkalimi i skaduar)

Lista e llogarive aktive me adresa emaili:

Get-ADUser -Filter ((mail -ne "null") -dhe (Enabled -eq "true")) -Properties Mbiemri,GivenEmri,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 të importohet lehtësisht në Esxel).

Import-Csv c:\ps\usernsme_list.csv | PërÇdo ( Get-ADUser -identity $_.user -Properties Emri, phonenumber | Zgjidh Emri, phonenumber | Export-CSV c:\ps\export_ad_list.csv -Append -Encoding UTF8 )

Shembulli tjetër ju lejon të shkarkoni librin e adresave të kompanisë në formular skedar csv, i cili më vonë mund të importohet në Outlook ose Mozilla Thunderbird:

Get-ADUser -Filter ((mail -ne "null") -dhe (Enabled -eq "true")) -Properties Mbiemri,GivenEmri,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 = (Get-Date).adddays(-90) Get-ADUser -filter ((passwordlastset -le $90_days))

$user = Get-ADUser winadmin -Properties thumbnailPhoto $user.thumbnailFoto | Set-Content winadmin.jpg -Bajti i kodimit

Lista e grupeve ku i përket llogaria e përdoruesit

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

Artikujt më të mirë mbi këtë temë