Jinsi ya kupata orodha ya vikundi vya AD vilivyochaguliwa ambavyo orodha kubwa ya watumiaji ni wanachama? Inapakia data kutoka kwa vyombo vya AD

Habari za mchana, wasomaji wapendwa na waliojiandikisha, tunaendelea kusoma uwezo wa Powershell na Active Directory. Kama unavyokumbuka, akaunti zake zote za watumiaji na kompyuta ziko kwenye hifadhidata ya NTDS.dit, kila kitu ni kizuri na cha kati. Wakati kampuni ina wasimamizi zaidi ya mmoja wa mfumo, hali inaweza kutokea ambapo takataka na sifa zisizo za lazima hujilimbikiza. Sisi sote ni wanadamu na tunaweza kusahau mambo fulani, na wakati fulani tunaweza kupotoshwa, ambayo pia itasababisha kusahau habari muhimu. Na tunafikia hitimisho kwamba watumiaji wasiofanya kazi (waliofutwa kazi au waliosahaulika) hujilimbikiza kwenye Saraka ya Actvie; kwa hali yoyote, msimamizi mzuri wa mfumo anapaswa kuwatambua, kuwazima, na kisha kuwafuta ikiwa inataka, ambayo ndio tutafanya.

Kupitia ADUC snap-in

Mara ya mwisho tayari nilikupa mfano wa kutumia Watumiaji wa Saraka ya Active na Kompyuta, kupitia ambayo tulitafuta kompyuta zilizokosekana kwenye mtandao wa ndani ambao haujaonekana kwa mwezi. Sasa tutafanya vivyo hivyo na akaunti za watumiaji. Nina AD kwenye Windows Server 2012 R2, fungua ADUC, ili kufanya hivyo bonyeza WIN+R na uingize dsa.msc.

Katika fomu ya ombi inayofungua, ingiza:

  • Jina la ombi > kwangu hawa ni watumiaji waliopotea
  • Maelezo ikiwa ni lazima
  • Omba mzizi > hapa unaweza kuacha kikoa kizima, au uibainishe kwenye OU unayotaka

Kisha bonyeza kitufe cha ombi.

Kwenye kichupo cha watumiaji tunaona kipengee "Idadi ya siku tangu kuingia mara ya mwisho"; kwa mfano, niliiweka kwa siku 60.

Kwa hivyo, utapokea orodha unayohitaji ya akaunti za wafanyikazi ambazo hazifanyi kazi.

Kupitia Powershell snap-in

Kitu kimoja kinaweza kufanywa kupitia Powershell. Nitakupa mara moja msimbo ambao kazi yake ni kutafuta watumiaji wasiotumia; kwa hili nilichagua kipindi cha siku 45, kuzima data ya mtumiaji na kuhamia OU iliyoteuliwa mahususi.

$date_with_offset= (Pata-Tarehe).OngezaSiku(-45)
$users = Get-ADUser -Properties LastLogonDate -Filter (LastLogonDate -lt $date_with_offset ) | Panga LastLogonDate
foreach ($user in $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 ) | Panga LastLogonDate | FT Jina, LastLogonDate -AutoSize | Faili ya Nje c:\Script\users.txt

  • Katika mstari wa kwanza unatangaza tofauti ambayo unaweka neno la utafutaji
  • Unda kigezo na ufanye uteuzi kulingana na wakati wa mwisho wa kuingia
  • Kuhamisha watumiaji

  • Kutoa ripoti kwa faili

Mambo muhimu zaidi kuhusu kufanya kazi na mtumiaji. Kabla ya kutumia amri zilizo chini, unahitaji kupakia moduli ya Active Directory kupitia amri

Pata Usaidizi Pata-ADUser

Hati za kupakua watumiaji wote kutoka kwa MS Active Directory (ITGC)

Ivan Piskunov

Moja ya taratibu za kawaida za ukaguzi ITGC kwa katalogi Saraka Inayotumika ni kupata upakuaji wa watumiaji wote wa kikoa. Kulingana na data iliyopatikana, taratibu za kupima zinaundwa, kwa mfano, kusoma orodha ya wasimamizi au kutambua watumiaji wenye nenosiri lililoisha. Njia bora zaidi ya kuunda upakiaji kama huo itakuwa kutumia kiolesura cha kawaida PowerShell , mifano ambayo tutazingatia katika makala hii

1. Express pakia kwa kutumia hati PowerShell

Ifuatayo ni hati ya PowerShell kama mojawapo ya njia rahisi na za haraka zaidi za kupata orodha ya watumiaji wote wa kikoa cha AD katika umbizo la CSV, ambayo inaweza kufunguliwa bila matatizo yoyote katika 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() # Idadi ya akaunti $users.Count $users | ForEach-Object ( $user = $_.Properties New-Object PsObject -Property @( Nafasi = $user.description Department = $user.department Ingia = $user.userprincipalname Phone = $user.telephonenumber Room = $user.physicaldeliveryofficename Full jina = $user.cn ) ) | Hamisha-Csv -NoClobber -Usimbaji utf8 -Njia C: list_domain_users.csv

Ili script ifanye kazi kwenye mfumo wako, unahitaji kusahihisha kidogo, yaani ingiza vigezo muhimu, i.e. kama katika mfano huu hivi ndivyo vigezo Watumiaji katika idara Idara katika kikoa Test.ru. Na pia onyesha njia ambayo faili imehifadhiwa list_domain_users.csv

Baada ya kupakua, ikiwa utaifungua mara moja list_domain_users.csv , itaonekana isiyoweza kusomeka, hata hivyo, kwa kutumia njia za kawaida tunaweza kuileta kwa urahisi katika umbizo tunalohitaji. Fungua katika Excel list_domain_users.csv , chagua safu wima ya kwanza, kisha uende kwenye kichupo cha "Data" na ubofye "Nakala kwa Safu". Chagua "delimited" na bofya "Next". Tayari!

!Ni muhimu kutambua kwamba hati hii haitaonyesha zaidi ya watumiaji 1000. Inafaa kabisa kwa kampuni ndogo, lakini kwa wale ambao wana idadi kubwa ya watumiaji kwenye kikoa chao, wanapaswa kuamua kwa njia zilizoelezwa hapo chini.

2. Advanced PowerShell cmdlet kwa ajili ya kupata Active Directory upakiaji

Moduli ya Saraka Inayotumika ya zana ya Windows PowerShell (iliyoletwa katika Windows Server 2008 R2 na matoleo mapya zaidi) hukuruhusu kuunda cmdlets zinazofanya upotoshaji mbalimbali na vitu vya saraka ya AD. cmdlet hutumiwa kupata habari kuhusu watumiaji na mali zao Pata-ADUser.

Kuanza fungua dirisha la Powershell na haki za msimamizi na agiza moduli ya Saraka Inayotumika kwa hatua zaidi:
Leta-Moduli amilifusaraka

Kwa orodhesha akaunti zote za kikoa na, wacha tuendeshe amri:

Pata-ADUser -chujio *

Kwa onyesha habari kamili kuhusu sifa zote zinazopatikana mtumiaji tuser, endesha amri

Get-ADUser -identity tuser -properties *


Kwa mfano, tunavutiwa na habari kuhusu tarehe ya mabadiliko ya nenosiri na wakati muda wake unapoisha . Matokeo ya amri yanaweza kusafirishwa kwa faili ya maandishi:

Get-ADUser -filter * -properties PasswordExpired, PasswordLastSet, PasswordNeverExpires | ft Jina, PasswordExpired, PasswordLastSet, PasswordNeverExpires > C:tempusers.txt

Au mara moja pakia kwenye CSV , ambayo katika siku zijazo itakuwa rahisi kusafirisha kwa Excel (kwa kuongeza, kwa kutumia sort-object tutapanga jedwali kwa safu wima ya PasswordLastSet, na pia kuongeza hali ya wapi - jina la mtumiaji lazima liwe na kamba "Dmitry")

Get-ADUser -filter * -properties PasswordExpired, PasswordLastSet, PasswordNeverExpires | wapi ($_.name -kama "*Dmitry*") | aina-kitu PasswordLastSet | chagua-kitu Jina, PasswordExpired, PasswordLastSet, PasswordNeverExpires | Hamisha-csv -njia c:tempuser-nenosiri-inaisha-2015.csv

Katika maoni kwa makala iliyotangulia, tulikumbuka kuhusu uhasibu katika Excel badala ya 1C. Kweli, hebu tuangalie ni kiasi gani unajua Excel. Leo nitakuonyesha jinsi ya kupata data kutoka kwa Active Directory na kufanya kazi nayo bila macros na PowerShell - tu na mifumo ya kawaida ya Ofisi. Kwa mfano, unaweza kupata takwimu kwa urahisi kuhusu matumizi ya mifumo ya uendeshaji katika shirika lako ikiwa tayari huna kitu kama Microsoft SCOM. Kweli, au tu joto na uondoe mawazo yako kwenye maandishi.


Kwa kweli, unaweza kupata data kama ilivyo kwenye mifano hapa chini kihalisi na laini moja kwenye PowerShell. Lakini, kwanza, PowerShell ni ya kuchosha sana, na pili, Excel inaweza kusasisha data kwa nguvu - hati zinazopatikana zinaweza kuchapishwa mkondoni na kusahaulika juu ya kusasisha.

Kufanya kazi na data, nitatumia utaratibu wa Swala la Nguvu. Kwa Ofisi ya 2010 na 2013 itabidi usakinishe programu-jalizi; Microsoft Office 2016 tayari ina moduli hii iliyojengewa ndani. Kwa bahati mbaya, toleo la kawaida halitoshi kwetu; tutahitaji Professional.


Utaratibu yenyewe umeundwa kupokea na kuchakata data kutoka kwa vyanzo mbalimbali - kutoka kwa ODBC ya zamani na faili za maandishi, hadi Exchange, Oracle na Facebook. Maelezo zaidi kuhusu utaratibu na lugha ya maandishi iliyojengewa ndani "M" tayari yameandikwa kwa Habré, lakini nitaangalia mifano michache ya kutumia Power Query kupata data kutoka Active Directory.

Kuongeza joto: Hebu tuone watumiaji wetu walipoingia

Ombi kwa hifadhidata ya kikoa yenyewe imeundwa kwenye kichupo cha "Data ― Ombi jipya ― Kutoka kwa vyanzo vingine ― Kutoka kwa Saraka Inayotumika".



Bainisha chanzo cha data.


Utahitaji kuchagua jina la kikoa na kutoa maelezo muhimu ya uunganisho. Ifuatayo, chagua aina ya vitu, katika mfano huu - mtumiaji. Upande wa kulia katika kidirisha cha onyesho la kukagua, swali tayari linaendeshwa, linaonyesha onyesho la kukagua data.



Tunatayarisha ombi na kufurahia onyesho la kukagua.


Unapaswa kuandaa ombi mapema kwa kubofya kitufe cha "hariri" na kuchagua safu wima zinazohitajika. Kimsingi, safu wima hizi ni madarasa. Kila moja ina seti ya sifa maalum za kitu cha Saraka Inayotumika, isipokuwa safu wima kuu. displayName, ambayo yenyewe ni sifa. Nitazingatia madarasa mtumiaji, mtu, juu Na usalama Mkuu. Sasa unahitaji kuchagua sifa zinazohitajika kutoka kwa kila darasa kwa kutumia "kiendelezi" - ikoni iliyo na mishale miwili kwenye kichwa cha safu:

  • Darasa mtumiaji kupanua kwa kuchagua LastLogonTimestamp Na userAccountControl;
  • V mtu tuchague nambari ya simu;
  • V juuWakati Imeundwa;
  • na katika usalama MkuuSamAccountName.


Tunapanua ombi.


Sasa hebu tuweke kichujio: hasa, ili usipate akaunti zilizozuiwa, sifa ya mtumiajiAccountControl lazima iwe na thamani ya 512 au 66048. Kichujio kinaweza kuwa tofauti katika mazingira yako. Unaweza kusoma zaidi kuhusu sifa katika hati za Microsoft.



Inaweka kichujio.


Wakati mwingine Excel hugundua umbizo la data kimakosa, hasa thamani ya sifa ya lastLogonTimestamp. Ikiwa bahati mbaya kama hiyo itakupata ghafla, unaweza kuweka umbizo sahihi kwenye kichupo cha "Badilisha".

Sasa safu ya mtumiajiAccountControl inapaswa kufutwa - haihitajiki kabisa kwenye onyesho. Na bofya "Pakua na funga".


Matokeo yake ni sahani ambayo inahitaji tu kugusa kidogo kumaliza. Kwa mfano, badilisha safu wima kwa kitu kinachosomeka zaidi. Na usanidi sasisho la data kiotomatiki.


Usasishaji otomatiki wakati wa kufungua jedwali au kwa kuisha kwa muda husanidiwa kwenye kichupo cha "Data" katika "Sifa".



Inaweka sasisho la data.


Baada ya kuanzisha sasisho kukamilika, unaweza kutoa meza kwa usalama kwa idara ya wafanyakazi au huduma ya usalama - wajulishe ni nani aliyeingia kwenye mfumo na wakati gani.


Nambari ya ombi katika lugha ya "M" iko chini ya kiharibu.

let Source = ActiveDirectory.Domains("domain.ru"), domain.ru = Source()[#"Object Jamii"], user1 = domain.ru(), #"Safu wima za Mbali" = Table.RemoveColumns(user1,() "organizationalPerson", "shadowAccount", "posixAccount", "msExchOmaUser", "msExchBaseClass", "msExchIMRecipient", "msExchCertificateInformation", "msExchMultiMediaUser", "msExchMailStorage", "msExchCustomAttributes", "barua pepe" imepokea #"Expanded element securityPrincipal" = Table.PandRecordColumn(#"Safu wima Zilizoondolewa", "securityPrincipal", ("sAMAccountName"), ("sAMAccountName")), #"Kipengele kilichopanuliwa juu" = Jedwali.PanuaSafu wima ya Rekodi(#"Mkuu wa usalama wa kipengele kilichopanuliwa ", "juu", ("whenCreated"), ("whenCreated")), #"Expanded element person" = Table.ExpandRecordColumn(#"Expanded element top", "person", ("telephoneNumber"), ("simuNambari ya simu" ")), #"Expanded kipengele user" = Table.ExpandRecordColumn(#"Expanded kipengele mtu", "mtumiaji", ("lastLogonTimestamp", "userAccountControl"), ("lastLogonTimestamp", "userAccountControl")), #"Safu kichujio kikiwa kimetumika" = Table.SelectRows(#"Kipengele cha mtumiaji kilichopanuliwa", kila kimoja ( = 512 au = 66048)), #"Aina Iliyobadilishwa" = Table.TransformColumnTypes(#"Safu zenye kichujio zimetumika",(("lastLogonTimestamp", aina tarehe))), #"Safu wima1" = Jedwali.OndoaSafu(#"Aina Iliyobadilishwa",("userAccountControl")) katika #"Safu wima1"

Kuunda kitabu cha anwani, au nini cha kufanya wakati tovuti ya shirika si rafiki na AD

Chaguo jingine la kutumia Excel kwa kushirikiana na Active Directory ni kuunda kitabu cha anwani kulingana na data ya AD. Ni wazi kwamba kitabu cha anwani kitakuwa cha kisasa ikiwa tu kikoa kiko sawa.


Wacha tuunde ombi la kitu mtumiaji, panua darasa mtumiaji V barua, na darasa mtu V nambari ya simu. Hebu tufute safu wima zote isipokuwa Jina lililotofautishwa― muundo wa kikoa hurudia muundo wa biashara, kwa hivyo majina Vitengo vya Shirika yanaendana na majina ya idara. Vile vile, vikundi vya usalama vinaweza kutumika kama msingi wa majina ya idara.


Sasa kutoka kwa mstari CN=Jina la mtumiaji, OU=Idara ya Uhasibu, OU=Divisheni, DC=kikoa, DC=ru unahitaji kutoa jina la idara moja kwa moja. Njia rahisi zaidi ya kufanya hivyo ni kutumia vikomo kwenye kichupo cha Kubadilisha.



Kutoa maandishi.


Kama delimiters mimi kutumia OU= Na ,OU=. Kimsingi, koma inatosha, lakini ninaicheza salama.



Weka vikomo.


Sasa kwa kutumia chujio unaweza kukata bila lazima OU, kama watumiaji waliozuiwa na iliyojengwa, sanidi upangaji na upakie data kwenye jedwali.



Mtazamo wa jedwali la muhtasari.

Ripoti ya haraka juu ya utungaji wa vituo vya kazi, bila kuanzisha mawakala au maandalizi mengine

Sasa hebu jaribu kuunda meza muhimu kwa kupata data kwenye kompyuta. Hebu tufanye ripoti juu ya mifumo ya uendeshaji inayotumiwa na kampuni: kwa hili tutaunda ombi, lakini wakati huu katika navigator tutachagua. kompyuta.



Tunafanya ombi la kitu cha kompyuta.


Wacha tuache madarasa ya safu kompyuta Na juu na kuzipanua:

  • Darasa kompyuta kupanua kwa kuchagua cn, mfumo wa uendeshaji, UendeshajiSystemServicePack Na operatingSystemVersion;
  • darasani juu tuchague Wakati Imeundwa.


Ombi la juu.


Ikiwa inataka, unaweza kutoa ripoti tu kwenye mifumo ya uendeshaji ya seva. Kwa mfano, chuja kwa mfumo wa uendeshaji au sifa ya uendeshajiSystemVersion. Sitafanya hivi, lakini nitasahihisha onyesho la wakati wa uumbaji - ninavutiwa na mwaka tu. Ili kufanya hivyo, kwenye kichupo cha "Uongofu", chagua safu tunayohitaji na uchague "Mwaka" kwenye menyu ya "Tarehe".



Tunatoa mwaka kutoka wakati kompyuta iliingia kwenye kikoa.


Sasa kilichobaki ni kufuta safu ya jina la maonyesho kama sio lazima na kupakia matokeo. Data iko tayari. Sasa unaweza kufanya kazi nao kama na meza ya kawaida. Kwanza, hebu tuunde jedwali la egemeo kwenye kichupo cha "Ingiza" - "Jedwali la Pivot". Wacha tukubaliane na chaguo la chanzo cha data na tusanidi sehemu zake.



Mipangilio ya sehemu ya jedwali la egemeo.


Sasa kilichobaki ni kubinafsisha muundo kwa ladha yako na kupendeza matokeo:



Jedwali la muhtasari wa kompyuta katika AD.


Ukipenda, unaweza kuongeza chati ya muhtasari, pia kwenye kichupo cha Chomeka. Katika "Kitengo" (au katika "Safu", ili kuonja) ongeza mfumo wa uendeshaji, kwa data - cn. Kwenye kichupo cha "Kubuni", unaweza kuchagua aina ya chati unayopenda; Nilipendelea chati ya pai.



Jedwali la mdwara.


Sasa inaonekana wazi kuwa, licha ya sasisho linaloendelea, jumla ya idadi ya vituo vya kazi na Windows XP na seva zilizo na Windows 2003 ni kubwa kabisa. Na kuna kitu cha kujitahidi.


Nambari ya ombi iko chini ya kiharibu.

let Source = ActiveDirectory.Domains("domain.ru"), domain.ru = Source()[#"Object Jamii"], computer1 = domain.ru(), #"Safu wima za Mbali" = Table.RemoveColumns(computer1,() "mtumiaji", "mtu wa shirika", "mtu")), #"Safu wima zingine zilizoondolewa" = Jedwali.Chagua Safu(#"Safu wima za mbali",("jina la kuonyesha", "kompyuta", "juu")), #"Panua kipengee computer" = Table.ExpandRecordColumn(#"Safu wima zingine za mbali", "kompyuta", ("cn", "operatingSystem", "operatingSystemServicePack", "operatingSystemVersion"), ("cn", "operatingSystem", "operatingSystemServicePack", " operatingSystemVersion")), #"Extended top" = Table.ExpandRecordColumn(#"Kompyuta Iliyopanuliwa", "juu", ("whenCreated"), ("whenCreated")), #"Ilitolewa mwaka" = Table.TransformColumns( #" Sehemu ya juu ya kipengele",(("ilipoundwa", Tarehe.Mwaka))), #"Safu wima Zilizo mbali1" = Jedwali.Ondoa Safu(#"Mwaka Uliotolewa",("Jina la kuonyesha")) katika #"Safu wima1"

Ongeza vitambulisho

0

Nina hati ifuatayo inayofanya kazi ambayo hukagua ikiwa orodha kubwa ya watumiaji katika faili ya CSV ni mwanachama wa kikundi cha AD na huandika matokeo kwa results.csv.

Sina uhakika jinsi ya kubadilisha hati ili niweze kubadilisha $group = "InfraLite" hadi $group = DC .\List_Of_AD_Groups.CSV .

Kwa hivyo hati hairudishi tu ulinganifu wa kikundi kimoja cha AD, lakini kwa hivyo inarejesha zinazolingana na vikundi 80 vya AD zilizomo katika List_of_AD_groups.csv. Kuandika NDIYO/HAPANA kwa kila kikundi cha Matangazo kwenye safu wima mpya ya CSV (au ikiwa hii haiwezekani, kuunda faili tofauti ya CSV kwa kila kikundi na matokeo kutafanya vivyo hivyo.

Ningeweza kufanya hivi kwa mikono kwa kubadilisha thamani kutoka $group na jina la faili ya usafirishaji na kuendesha tena hati mara 80, lakini ingelazimika kuwa haraka na PS kufanya hivi.

kwa mfano results.csv?:

NAME AD_GROUP1 AD_GROUP2 AD_GROUP80 n.k. mtumiaji1 ndiyo hapana ndiyo mtumiaji2 hapana hapana ndiyo mtumiaji3 hapana ndiyo hapana mwangwi "UserName`InfraLite" >> results.csv $users = GC .\user_list.csv $group = "InfraLite" $members = Get-ADGroupMember -Identity $group -Recursive | Chagua -ExpandProperty SAMAccountName foreach ($user in $users) (kama ($members -contains $user) ( echo "$user $group`tYes" >> results.csv ) vinginevyo ( echo "$user`tNo" >> matokeo .csv))

  • 2 majibu
  • Kupanga:

    Shughuli

0

Suluhisho dogo kwa shida yako itakuwa kufunga nambari yako iliyopo kwenye kitanzi kingine na kuunda faili ya pato kwa kila kikundi:

$groups = Pata-Maudhui "C:\groups.txt" mbele ($group katika $groups) ( $members = Get-ADGroupMember ... ... )

Mbinu maridadi zaidi itakuwa kuunda kiolezo cha kupanga ramani ya kikundi, kukiiga kwa kila mtumiaji, na kujaza nakala na uanachama wa kikundi cha mtumiaji. Kitu kama hiki kinapaswa kufanya kazi:

$template = @() Pata-Yaliyomo "C:\groups.txt" | ForEach-Object ( $template[$_] = $false ) $groups = @() Pata-ADGroup -Filter * | ForEach-Object ( $groups[$_.DistinguishedName] = $_.Name ) Pata-ADUser -Filter * -Properties MemberOf | ForEach-Object ( $groupmap = $template.Clone() $_.MemberOf | ForEach-Object ( $groups[$_] ) | Where-Object ( $groupmap.ContainsKey($_) ) | ForEach-Object ( $groupmap [$_] = $true ) Kitu-Kipya -Aina PSObject -Property $groupmap ) | Hamisha-Csv "C:\user_group_mapping.csv" -NoType

0

Nimekuwa nikicheza na hii kwa muda na nadhani nimepata njia ya kukupata kile ulichokuwa ukifuata.

Nadhani Ansgar alikuwa kwenye njia sahihi, lakini sikuweza kuifanya ifanye kile kilichofuata. Alitaja kuwa wakati wa kuandika hakuwa na upatikanaji wa mazingira ya AD.

Hivi ndivyo nimekuja na:

$UserArray = Pata-Yaliyomo "C:\Temp\Users.txt" $GroupArray = Pata-Maudhui "C:\Temp\Groups.txt" $OutputFile = "C:\Temp\Something.csv" # Kuweka hashtable kwa matumizi ya baadaye $UserHash = New-Object -TypeName System.Collections.Hashtable # Kitanzi cha nje ili kuongeza watumiaji na uanachama kwa UserHash $UserArray | ForEach-Object( $UserInfo = Get-ADUser $_ -Properties MemberOf # Inaondoa sintaksia ya LPAP hadi SAMAccountName ya kikundi $Memberships = $UserInfo.MemberOf | ForEach-Object( ($_.Split(",")) .replace("CN=","") ) #Kuongeza Mtumiaji=Jozi ya Uanachama kwenye Hash $UserHash.Ongeza($_,$Memberships) ) #Mzunguko wa nje ili kuunda kipengee kwa kila mtumiaji $Results = $UserArray | ForEach-Object( # Kwanza unda kitu rahisi $User = New-Object -TypeName PSCustomObject -Property @( Name = $_ ) # Ongeza washiriki kwa kipengee, kulingana na $GroupArray $GroupArray | ForEach-Object ( #Checking $UserHash kuona kama kikundi kinajitokeza katika orodha ya wanachama ya mtumiaji $UserIsMember = $UserHash.($User.Name) -ina $_ #Kuongeza sifa kwenye kipengee, na kuthamini $User | Add-Member -MemberType NoteProperty -Name $ _ -Value $UserIsMember ) #Kurejesha kipengee kwenye kigezo Return $User ) #Geuza vitu hivyo kuwa CSV, kisha vitoe $Results | ConvertTo-CSV -NoTypeInformation | Out-File $OutputFile

Hebu tumaini kila kitu kina maana. Nilitoa maoni kadri niwezavyo. Ingekuwa rahisi sana kugeuza kuwa ADSI ikiwa hukuwa na RSAT iliyosakinishwa kwenye mashine yoyote unayotumia hii. Ukiihitaji, nijulishe na nitafanya mabadiliko ya haraka.

Leo tutajaribu kupakua orodha ya watumiaji wote kwenye faili tofauti kutoka kwa Active Directory. Msaidizi wetu mkuu katika suala hili atakuwa PowerShell. Jambo ni kwamba Microsoft hapo awali ilipanga koni ya amri ya PowerShell kama zana kuu ya kudhibiti vifaa vya seva ya Windows. Na leo, wakati tayari tuna toleo la 2.0, kwa ujumla, hii ni hivyo.

Hata katika siku za hivi majuzi, ili kwa namna fulani kuingiliana na AD, wasimamizi walihitaji kuwa na uwezo wao wa kutumia matumizi ya dsquery au aina mbalimbali za hati au huduma. Leo, kuanzia na Windows Server 2008 R2, tunaweza kufanya kazi na AD kupitia PowerShell. Pamoja na ujio wa PowerShell 2.0, moduli maalum hutumiwa kuingiliana na Active Directory Moduli ya Saraka Inayotumika ya Windows PowerShell, ambayo ina orodha muhimu ya cmdlets. Kwa kazi zetu tutatumia amri Pata-ADUser.

Kwa hiyo, kulingana na mfumo gani wa uendeshaji tutakuwa tukiendesha console ya PowerShell chini, tutahitaji kufanya "hatua za maandalizi".

1) Ikiwa tunafanya kazi chini ya Windows Server hadi toleo la 2012, basi tunahitaji kuendesha amri:

  • Leta-Moduli amilifusaraka - amri ya kuingiza moduli kwenye AD

Kwa matoleo ya mfumo wa uendeshaji kutoka 2012 na zaidi, moduli hii tayari imewezeshwa kwa chaguo-msingi.

2) Ikiwa tunafanya kazi kutoka kwa mteja wowote wa Windows, basi kifurushi cha usimamizi wa mbali cha RSAT lazima kisakinishwe juu yake, na Moduli ya Saraka Inayotumika ya kipengee cha Windows PowerShell imewekwa.

Ni vyema kutambua kwamba Get-ADUser cmdlet inapendekezwa kutekelezwa wakati kiasi cha data inayopakiwa ni hadi watumiaji 1000.

Inahamisha watumiaji wa AD kwa kutumia PowerShell kwa faili tofauti

Kwanza, hebu tuite usaidizi kwa amri ya Get-ADUser. Matokeo yake, utapokea amri zote muhimu kwa utawala zaidi.

  • saidia Pata-ADUser - amri ya kuita usaidizi

Ili kupata orodha ya watumiaji wote walio na mali zote kwenye dirisha la PowerShell, unahitaji kutekeleza amri ifuatayo:

  • Pata-ADUser -chujio * - Hamisha orodha ya watumiaji wa AD

Upakiaji huu sio wa habari kabisa na hauendani na habari zote muhimu kwenye dirisha. Kwa hivyo, hebu tujaribu kupunguza utaftaji na kuonyesha sifa za mtumiaji maalum anayeitwa user1:

  • Get-ADUser -identity user1 -properties * - mali ya kuuza nje ya mtumiaji maalum

Sasa hebu tujaribu kuuza nje orodha ya watumiaji wote na mali zao kwa nje txt au csv faili:

  • Pata-ADUser -chuja * -sifa * | Hamisha-csv -njia c:\users.csv -encoding Unicode - Hamisha watumiaji kwa faili tofauti

Ningependa kulipa kipaumbele maalum kwa ufunguo -encoding Unicode. Inatumikia kuhakikisha kwamba alfabeti ya Kirusi ya Kicyrillic, baada ya kuuza nje kutoka AD, inaweza kuonyeshwa kwa usahihi katika faili iliyopakiwa. Kwa mfano, kupitia Microsoft Excel tutaona alama za swali badala ya barua za Kirusi.

Wakati wa kutazama faili, data inasafirishwa kwa mstari mmoja na kwa hivyo haisomeki. Ili kubadilisha hii tunahitaji kufanya yafuatayo: