Si të konfiguroni telefonat inteligjentë dhe PC. Portali informativ
  • në shtëpi
  • Lajme
  • Powershell merr përdoruesit nga reklama. Excel në vend të PowerShell: pyetje për AD dhe raportet e sistemit "në gju"

Powershell merr përdoruesit nga reklama. Excel në vend të PowerShell: pyetje për AD dhe raportet e sistemit "në gju"

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 punoni me ta 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 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 do të duhet të instaloni shtojcën, në Microsoft Office 2016 ky modul është tashmë i integruar. Fatkeqësisht, botimi standard nuk na mjafton, do të na duhet Professional.


Vetë mekanizmi është krijuar për të marrë dhe përpunuar të dhëna nga shumica 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ë grup atributesh specifike. Objekti aktiv Drejtoria, përveç 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 KryesorEmri i llogarisë Sam.


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ë - njoftoni 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=. Parimisht mjafton një presje, por po e luaj mirë.



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ë. Ne do të bëjmë një raport për ato të përdorura nga kompania sistemet operative: për ta bërë këtë, ne do të krijojmë një kërkesë, por këtë herë 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ë menynë "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ë grafik përmbledhës, 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", mund të zgjidhni llojin e grafikut që ju pëlqen; Unë preferova grafikun me byrek.



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

Skriptet për shkarkimin e të gjithë përdoruesve nga MS Active Directory (ITGC)

Ivan Piskunov

Nje nga procedurat standarde kryerja e një auditimi ITGC për katalogun Active Directory është të merrni një shkarkim të 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ë efektive për të krijuar një ngarkim të tillë do të ishte përdorimi ndërfaqe standarde PowerShell , shembuj të të cilëve do t'i shqyrtojmë në këtë artikull

1. Ngarkimi i shpejtë duke përdorur një skript PowerShell

Më poshtë është Skripti PowerShell, si një nga më të thjeshtat dhe mënyra të shpejta merrni një listë të të gjithë përdoruesve të domenit AD në Formati CSV, i cili hapet pa asnjë problem me të njëjtin Excel.

$objSearcher = New-Object System.DirectoryServices.DirectorySearcher $objSearcher.SearchRoot = "LDAP://ou=Users,ou=Departmets,dc=test,dc=ru" $objSearcher.Filter = "(&(objectCategory=person) (!userAccountControl:1.2.840.113556.1.4.803:=2))" $users = $objSearcher.FindAll() # Numri i llogarive $users.Numri $users | PërÇdo-Object ( $user = $_.Properties New-Object PsObject -Property @( Pozicioni = $user.description Departamenti = $user.department Hyrja = $user.userprincipalname Telefoni = $user.telephonenumber Dhoma = $user.physicaldeliveryofficename e plotë emri = $user.cn ) ) | Export-Csv -NoClobber -Encoding utf8 -Shtegu C: list_domain_users.csv

Në mënyrë që skripti të funksionojë në sistemin tuaj, duhet ta korrigjoni pak, përkatësisht të futni parametrat e kërkuar, d.m.th. si në në këtë shembull këto janë parametrat Përdoruesit në departament Departamentet në domen Test.ru. Dhe gjithashtu tregoni shtegun ku është ruajtur skedari list_domain_users.csv

Pas shkarkimit, nëse e hapni menjëherë list_domain_users.csv , do të duket e palexueshme, megjithatë, duke përdorur mjete standarde mund ta sjellim lehtësisht në formatin që na nevojitet. Hapni në Excel list_domain_users.csv , zgjidhni kolonën e parë, më pas shkoni te skeda “Data” dhe klikoni “Tekst sipas kolonave”. Zgjidhni "kufizuar" dhe klikoni "Next". Gati!

!Është e nevojshme 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 për ato me një domen sasi e madhe përdoruesit duhet të përdorin metodat e përshkruara më poshtë.

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

Moduli Active Directory për mjetin Windows PowerShell (prezantuar në Windows Server 2008 R2 dhe më lart), ju lejon të krijoni cmdlet që kryejnë manipulime të ndryshme me objektet e drejtorisë AD. cmdlet përdoret për të marrë informacion rreth përdoruesve dhe vetive të tyre Get-ADUser.

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

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

Get-ADUser -filtri *

për të të tërheqë plot informacione 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 data e ndryshimit të fjalëkalimit dhe koha e skadimit të tij . Rezultati i 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ërveç kësaj, duke përdorur sort-object ne do ta renditim tabelën sipas kolonës PasswordLastSet, dhe gjithashtu do 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 -path c:tempuser-password-expires-2015.csv

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ë(i shkrepur ose i harruar), sido që të jetë, mirë Administratori 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ë.

Nëpërmjet snap-in ADUC

Herën e fundit ju dhashë një shembull të përdorimit të snap-in-it aktiv Përdoruesit e Drejtorisë dhe kompjuterë, përmes të cilëve kërkuam kompjuterë që mungonin 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, hap ADUC, për ta bërë këtë shtyp WIN+R dhe fut 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_me_offset ) | Rendit Data Logon Fund
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

0

Unë kam skriptin e mëposhtëm të punës i cili kontrollon nëse listë e madhe përdoruesit në skedarin CSV si anëtar i grupit 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 .

Pra, skripti nuk kthen vetëm ndeshjet për një grup AD, por kështu kthen ndeshjet për 80 grupet e 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, krijimi i një skedari të veçantë CSV për secilin grup me rezultatet do të bëjë të njëjtën gjë.

Unë mund ta bëj këtë manualisht duke ndryshuar vlerën nga $group dhe emrin e skedarit të eksportit dhe Rifillo, fillo përsëri skenari 80 herë, por duhej të ishte i shpejtë me PS për ta bërë këtë

për shembull 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" $members = Get-ADGroupMember -Identity $group -Rekursive | Zgjidh -ExpandProperty SAMAccountName foreach ($user në $users) (nëse ($members -përmban $user) ( jehonë "$user $group`tYes" >> results.csv ) tjetër (echo "$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:

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

Një qasje më elegante 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 ( $template[$_] = $false ) $groups = @() Get-ADGroup -Filter * | PërÇdo-Object ( $groups[$_.DistinguishedName] = $_.Name ) Get-ADUser -Filter * -Properties MemberOf | ForEach-Object ( $groupmap = $template.Clone() $_.MemberOf | ForEach-Object ( $groups[$_] ) | Where-Object ( $groupmap.ContainsKey($_)) | ForEach-Object ( $grupmap [$_] = $true ) New-Object -Type PSOobject -Property $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ë keni kërkuar.

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

Ja çfarë 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 # Loop 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 $Memberships = $UserInfo.MemberOf | ForEach-Object( ($_.Split(",")) .replace("CN=","") ) #Shtimi i çiftit User=Membership në hash $UserHash.Add($_,$Memberships) ) #Cak i jashtëm për të krijuar një objekt për përdorues $Results = $UserArray | ForEach-Object( # Së pari krijoni një objekt të thjeshtë $User = New-Object -TypeEmri PSCustomObject -Property @( Name = $_ ) # Shtoni në mënyrë dinamike anëtarë në objekt, bazuar në $GroupArray $GroupArray | ForEach-Object ( #Checking $UserHash për të parë nëse grupi shfaqet në listën e anëtarësimit të përdoruesit $UserIsMember = $UserHash.($User.Name) -contains $_ #Shtimi i pronës në objekt dhe vlerën $User | Add-Amber -MemberType NoteProperty -Name $ _ -Vlera $UserIsMember ) #Kthimi i objektit në variablin Kthehu $User ) #Konverto objektet në një CSV, pastaj nxirr ato $Rezultat | ConvertTo-CSV -NoTypeInformation | Out-File $OutputFile

Le të shpresojmë që gjithçka të ketë kuptim. Komentova me 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 këtë. Nëse keni nevojë, më njoftoni dhe unë do të bëj disa ndryshime të shpejta.

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, duke përdorur shembuj të thjeshtë, ne do të tregojmë Karakteristikat e PowerShell, të cilat mund të përdoren për të marrë informacione të ndryshme në lidhje me përdoruesit e Active Directory dhe atributet e 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. Për të marrë informacion rreth përdoruesve domeni aktiv Drejtoria dhe vetitë e tyre 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 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 (Serveri në distancë Mjetet e Administrimit -> 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, 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ë na duhen. 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 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 lehtësisht 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 të përdoruesit të Active Directory.

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:

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-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ë të llogarive që janë ruajtur në skedar teksti(një llogari për rresht) ju 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ë ndërmarrjes si një 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 ai bën pjesë Llogaria përdorues

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

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