Tafuta watumiaji wasiotumia katika Saraka Inayotumika. Excel badala ya PowerShell: maswali kwa AD na ripoti za mfumo "juu ya goti"

Inatumika kuunda, kurekebisha, na kufuta vipengee vya saraka. Mtumiaji pia anaweza kutumia amri lifde kupanua utaratibu, kuhamisha mtumiaji na taarifa ya kikundi kwa programu au huduma nyinginezo, na kujaza huduma ya ADAM (Active Directory Application Mode) na data kutoka kwa huduma zingine za saraka.

Sintaksia

lifde [-i] [-f jina la faili] [-s jina_la_seva] [-c mstari wa 1 mstari wa 2] [-v] [-j njia] [-t nambari_ya_bandari] [-d DN_base] [-r kichujio_LDAP] [-p mkoa] [-l LDAP_attribute_orodha] [-o LDAP_attribute_orodha] [-g] [-m] [-n] [-k] [-a ] [-b ] [-? ]

Chaguo

-i Inabainisha hali ya kuingiza. Ikiwa parameter haijafafanuliwa, hali ya kuuza nje hutumiwa kwa default. -fjina la faili Inabainisha jina la faili ya kuingiza au kusafirisha. -sjina_la_seva Inabainisha kompyuta ambayo uagizaji au uhamishaji wa uendeshaji unapaswa kufanywa. Programu chaguomsingi lifde itatekelezwa kwenye kompyuta ambayo lifde imewekwa. -cmstari wa 1 mstari wa 2 Huchukua nafasi ya matukio yote mistari 1 maudhui mistari 2. Kawaida hutumika unapoingiza data kutoka kikoa kimoja hadi kingine na unahitaji kubadilisha jina bainifu la kikoa kinachofanya usafirishaji ( mstari 1), kuingiza jina la kikoa ( mstari wa 2). -v Huwasha hali ya kina ya kuingia. -jnjia Inabainisha eneo la faili ya kumbukumbu. Chaguo-msingi ni njia ya sasa. -tnambari_ya_bandari Hubainisha nambari ya bandari ya Itifaki ya Ufikiaji Saraka Nyepesi (LDAP). Lango chaguomsingi la LDAP ni 389. Lango la orodha ya kimataifa ni 3268. -dDN_base Hubainisha jina bainifu la msingi wa utafutaji wa kuhamisha data. -rKichujio cha LDAP Huunda kichujio cha utafutaji cha LDAP kwa ajili ya kuhamisha data. Kwa mfano, kichujio kifuatacho husafirisha watumiaji wote walio na jina maalum la kati: csvde -r (na(objectClass=Mtumiaji)(sn=Jina la ukoo)) -pmkoa Inabainisha eneo la utafutaji. Vigezo vya upeo wa utafutaji ni Msingi, Kiwango cha One Na Mti mdogo. -lLDAP_attribute_orodha Hubainisha orodha ya sifa zilizorejeshwa katika matokeo ya ombi la kuhamisha. Ikiwa kigezo hiki kitaachwa, sifa zote zinarejeshwa. -oLDAP_attribute_orodha Hubainisha orodha ya sifa za kuacha kutoka kwa matokeo ya ombi la kuhamisha. Chaguo hili kwa kawaida hutumiwa wakati wa kusafirisha vitu kutoka kwa Saraka Amilifu na kisha kuviingiza kwenye saraka nyingine inayooana na LDAP. Ikiwa sifa zozote hazitumiki na katalogi nyingine, zinaweza kutengwa kwenye seti ya matokeo kwa kutumia chaguo hili. -g Huondoa utafutaji wa kurasa. -m Huacha sifa ambazo haziwezi kuandikwa, kama vile ObjectGUID Na kituSID. -n Huacha kuhamishwa kwa thamani za mfumo wa jozi. -k Hupuuza makosa wakati wa uagizaji na kuendelea kuchakata. Ifuatayo ni orodha kamili ya makosa yaliyopuuzwa:

  • kitu tayari ni mwanachama wa kikundi;
  • ukiukaji wa darasa la kitu (ikimaanisha kuwa darasa la kitu maalum haipo) ikiwa kitu kilichoingizwa hakina sifa zingine;
  • kitu tayari kipo;
  • ukiukaji wa kizuizi;
  • sifa au thamani tayari ipo;
  • hakuna kitu kama hicho.
-aNenosiri_la_jina lililotofautishwa Inabainisha utekelezaji wa amri kwa kutumia maalum maalumu_jina_jina_la_mtumiaji Na nenosiri -b. -bnenosiri la kikoa cha mtumiaji Inabainisha amri ya kutekelezwa kwa kutumia maalum jina la mtumiaji, kikoa na nenosiri. Kwa chaguo-msingi, amri itatekelezwa kwa kutumia vitambulisho vya mtumiaji ambaye kwa sasa ameingia kwenye mtandao. Haiwezi kutumika na kigezo -a. -? Inaonyesha menyu ya amri.

Vidokezo

  • Na parameter -c unaweza kutumia mara kwa mara #schemaNamingContext Na #ConfigurationNamingContext badala ya majina mashuhuri ya kizigeu cha saraka ya schema na kizigeu cha saraka ya usanidi.
  • Wakati wa kuunda faili ya kuagiza kwa amri lifde, tumia thamani badilishaAina kubainisha aina ya mabadiliko yaliyomo katika faili ya kuleta. Maadili badilishaAina zimetolewa katika jedwali hapa chini.

Ufuatao ni mfano wa faili ya kuleta LDAP katika umbizo la LDIF inayotumia thamani ongeza:
DN: CN=mteule_mtumiaji,DC=jina la kikoa
aina ya mabadiliko: ongeza
CN: mteule_mtumiaji
maelezo:maelezo_ya faili
objectClass: mtumiaji
objectClass: mteule_mtumiaji

Mifano

Ili kutoa tu jina bainifu, jina la kawaida, jina la kwanza, jina la mwisho, na nambari ya simu ya vitu vilivyorejeshwa, ingiza:
-l jina_mashuhuri, CN, Jina, S.N. simu
Ili kuwatenga kitambulisho cha kipekee cha kimataifa (GUID) cha kitu, ingiza:
-o wakati_imeundwa, wakati_imebadilishwa, object_GUID

Imejitolea kutumia PowerShell kudhibiti AD. Kama sehemu ya kuanzia, mwandishi aliamua kuchukua kazi 10 za kawaida za usimamizi wa AD na kuangalia jinsi zinaweza kurahisishwa kwa kutumia PowerShell:

  1. Weka upya nenosiri la mtumiaji
  2. Washa na uzime akaunti
  3. Fungua akaunti ya mtumiaji
  4. Futa akaunti yako
  5. Tafuta vikundi tupu
  6. Ongeza watumiaji kwenye kikundi
  7. Orodhesha washiriki wa kikundi
  8. Tafuta akaunti za kompyuta zilizopitwa na wakati
  9. Zima akaunti ya kompyuta
  10. Tafuta kompyuta kwa aina

Kwa kuongeza, mwandishi hudumisha blogu (kwa kutumia PowerShell, bila shaka), tunapendekeza kuangalia - jdhitsolutions.com/blog. Na unaweza kupata habari za kisasa zaidi kutoka kwa Twitter yake twitter.com/jeffhicks.
Kwa hivyo, hapa chini ni tafsiri ya kifungu "Kazi 10 za Juu za Saraka Zinazotatuliwa na PowerShell".

Kusimamia Active Directory (AD) kwa kutumia Windows PowerShell ni rahisi kuliko unavyofikiri, na ninataka kukuthibitishia hilo. Unaweza kuchukua hati zilizo hapa chini na kuzitumia kutatua idadi ya majukumu ya usimamizi wa AD.

Mahitaji

Ili kutumia PowerShell kudhibiti AD, unahitaji kutimiza mahitaji kadhaa. Nitaonyesha jinsi AD cmdlets inavyofanya kazi kwa kutumia kompyuta ya Windows 7 kama mfano.
Ili kutumia cmdlets, lazima uwe na kidhibiti cha kikoa cha Windows Server 2008 R2, au unaweza kupakua na kusakinisha Huduma ya Lango la Active Directory Management kwenye DC zilizopitwa na wakati. Tafadhali soma nyaraka kwa uangalifu kabla ya ufungaji; Kuanzisha upya CD kunahitajika.
Kwa upande wa mteja, pakua na usakinishe (RSAT) kwa Windows 7 au Windows 8. Katika Windows 7, utahitaji kufungua Paneli za Kudhibiti sura Mipango na kuchagua Washa au Zima Vipengele vya Windows. Tafuta Zana za Utawala wa Seva ya Mbali na kupanua sehemu Zana za Utawala wa Wajibu. Chagua vitu vinavyofaa kwa AD DS na AD LDS Tools, hasa kumbuka kuwa kipengee lazima kichaguliwe Moduli ya Saraka Inayotumika ya Windows PowerShell, kama inavyoonyeshwa kwenye Mchoro 1. (Katika Windows 8, zana zote huchaguliwa kwa chaguo-msingi). Sasa tuko tayari kufanya kazi.

Mtini.1 Kuwasha Zana za AD DS na AD LDS

Nimeingia kwa akaunti yenye haki za msimamizi wa kikoa. Nyingi za cmdlets nitakazoonyesha zitakuruhusu kutaja vitambulisho mbadala. Kwa hali yoyote, napendekeza kusoma msaada ( Pata msaada) na mifano ambayo nitaonyesha hapa chini.
Anzisha kipindi cha PowerShell na uingize moduli:

PS C:\> Ingiza-Moduli ActiveDirectory

Uagizaji huunda PSDrive mpya, lakini hatutaitumia. Hata hivyo, unaweza kuona ni amri gani zinazopatikana kwenye moduli iliyoagizwa.

PS C:\> get-command -module ActiveDirectory

Uzuri wa amri hizi ni kwamba ikiwa ninaweza kutumia amri kwenye kitu kimoja cha AD, basi inaweza kutumika kwenye 10, 100, na hata 1000. Hebu tuone jinsi baadhi ya cmdlets hizi zinavyofanya kazi.

Kazi ya 1: Weka upya nenosiri la mtumiaji

Hebu tuanze na kazi ya kawaida: kuweka upya nenosiri la mtumiaji. Unaweza kufanya hivyo kwa urahisi na kwa urahisi kwa kutumia cmdlet Weka-ADAccountPassword. Sehemu ya ujanja ni kwamba nenosiri jipya lazima liidhinishwe kama mfuatano uliolindwa: kipande cha maandishi ambacho kimesimbwa kwa njia fiche na kuhifadhiwa kwenye kumbukumbu kwa muda wa kipindi cha PowerShell. Kwanza, wacha tuunde kigezo na nenosiri mpya:
PS C:\> $new=Read-Host "Ingiza nenosiri jipya" -AsSecureString

Kisha, ingiza nenosiri jipya:

Sasa tunaweza kutoa akaunti (kwa kutumia jina la akaunti- chaguo bora) na weka nenosiri mpya. Hapa kuna mfano kwa mtumiaji Jack Frost:

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

Kwa bahati mbaya, kuna mdudu na cmdlet hii: -Pasthru, -Vipi, Na - Thibitisha haifanyi kazi. Ikiwa unapendelea njia ya mkato, jaribu hii:

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

Kwa hivyo, ninahitaji Jack kubadilisha nenosiri lake wakati mwingine atakapoingia, kwa hivyo ninarekebisha akaunti kwa kutumia Weka-ADUser.

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

Matokeo ya kuendesha cmdlet hayajaandikwa kwa koni. Ikiwa hii inahitaji kufanywa, tumia - Kweli. Lakini ninaweza kujua ikiwa operesheni ilifanikiwa au la kwa kupata jina la mtumiaji kwa kutumia cmdlet Pata-ADUser na kubainisha mali Nenosiri Limeisha, kama inavyoonyeshwa kwenye Kielelezo 2.


Mchele. 2. Matokeo ya Get-ADUser Cmdlet yenye sifa ya PasswordExpired

Mstari wa chini: Kuweka upya nenosiri la mtumiaji kwa kutumia PowerShell si vigumu hata kidogo. Ninakubali kwamba kuweka upya nenosiri pia ni rahisi kupitia snap Watumiaji wa Saraka Inayotumika na Kompyuta consoles Microsoft Management Console (MMC). Lakini kutumia PowerShell kunafaa ikiwa unahitaji kukasimu kazi, hutaki kupeleka snap-in iliyotajwa hapo juu, au unaweka upya nenosiri kama sehemu ya mchakato mkubwa wa kiotomatiki wa IT.

Hatua ya 2: Washa na uzime akaunti

Sasa hebu tuzima akaunti. Wacha tuendelee kufanya kazi na Jack Frost. Nambari hii hutumia kigezo -Vipi, ambayo unaweza kupata katika vitambaa vingine vinavyofanya mabadiliko ili kujaribu amri yangu bila kuiendesha.

PS C:\> Zima-ADAccount jfrost -whatif Je kama: Kufanya operesheni "Weka" kwenye Lengo "CN=Jack Frost, OU=staff,OU=Testing,DC=GLOBOMANTICS,DC=local".

Sasa wacha tuizima kwa kweli:

PS C:\> Lemaza-ADAAkaunti jfrost

Na wakati unakuja wa kuamsha akaunti, ambayo cmdlet itatusaidia?

PS C:\> Wezesha-ADAAkaunti jfrost

cmdlets hizi zinaweza kutumika katika usemi bomba, kuruhusu wewe kuwezesha au kulemaza akaunti nyingi kama wewe kama. Kwa mfano, msimbo huu utazima akaunti zote katika idara ya Mauzo

PS C:\> get-aduser -filter "idara -eq "sales" | zima-adaccount

Bila shaka, andika kichujio kwa Pata-ADUser ngumu sana, lakini hapa ndipo matumizi ya parameter -Vipi pamoja na cmdlet Lemaza-Akaunti ya ADA huja kuwaokoa.

Kazi ya 3: Fungua akaunti ya mtumiaji

Fikiria hali ambapo Jack alifunga akaunti yake alipokuwa akijaribu kuweka nenosiri jipya. Badala ya kujaribu kupata akaunti yake kupitia GUI, utaratibu wa kufungua unaweza kufanywa kwa kutumia amri rahisi.

PS C:\> Fungua-ADAAkaunti jfrost

cmdlet pia inasaidia vigezo -Vipi Na - Thibitisha.

Hatua ya 4: Futa akaunti

Haijalishi ni watumiaji wangapi unaowaondoa - ni rahisi kufanya kwa kutumia cmdlet Ondoa-ADUser. Sitaki kumwondoa Jack Frost, lakini ikiwa ningetaka, ningetumia nambari kama hii:

PS C:\> Remove-ADUser jfrost -whatif Je kama: Kufanya operesheni "Ondoa" kwenye Lengo "CN=Jack Frost,OU=staff,OU=Testing,DC=GLOBOMANTICS,DC=local".

Au naweza kuingiza watumiaji wengi na kuwafuta kwa amri moja rahisi:

PS C:\> get-aduser -filter "enabled -eq "false"" -property WhenChanged -SearchBase "OU=Wafanyakazi, DC=Globomantics,DC=Local" | ambapo ($_.WhenChanged -le (Pata-Tarehe).OngezaSiku(-180)) | Ondoa-ADuser -whatif

Amri hii itapata na kufuta akaunti zozote za OU za Wafanyikazi zilizozimwa ambazo hazijarekebishwa kwa siku 180 au zaidi.

Hatua ya 5: Tafuta vikundi tupu

Kusimamia vikundi ni kazi isiyoisha na isiyo na shukrani. Kuna njia nyingi za kupata vikundi tupu. Baadhi ya misemo inaweza kufanya kazi bora zaidi kuliko wengine, kulingana na shirika lako. Nambari iliyo hapa chini itapata vikundi vyote kwenye kikoa, pamoja na vilivyojumuishwa.

PS C:\> get-adgroup -filter * | wapi (-Sio ($_ | pata-adgroupmember)) | Chagua Jina

Ikiwa una vikundi na mamia ya wanachama, basi kutumia amri hii inaweza kuchukua muda mrefu; Pata-ADGroupMember huangalia kila kikundi. Ukiweza kuweka kikomo au kubinafsisha itakuwa bora.
Hapa kuna mbinu nyingine:

PS C:\> pata-adgroup -chuja "wanachama -sio kama "*" -AND GroupScope -eq "Universal"" -SearchBase "OU=Vikundi,OU=Wafanyakazi,DC=Globomantics, DC=local" | Chagua Jina, Kikundi*

Amri hii hupata vikundi vyote vya Universal ambavyo havina uanachama katika Vikundi vya OU na huonyesha baadhi ya sifa. Matokeo yanaonyeshwa kwenye Mchoro 3.


Mchele. 3. Tafuta na uchuje vikundi vya ulimwengu

Hatua ya 6: Kuongeza watumiaji kwenye kikundi

Wacha tuongeze Jack Frost kwenye kikundi cha IT cha Chicago:

PS C:\> add-adgroupmember "Chicago IT" -Wanachama jfrost

Ndiyo, ni rahisi hivyo. Unaweza pia kuongeza kwa urahisi mamia ya watumiaji kwenye vikundi, ingawa naona hii ni ngumu kidogo:

PS C:\> Add-ADGroupMember "Chicago Employees" -mwanachama (get-aduser -filter "city -eq "Chicago"")

Nilitumia usemi uliowekwa kwenye mabano kupata watumiaji wote ambao wana mali ya Jiji huko Chicago. Nambari katika mabano inatekelezwa na vitu vinavyotokana hupitishwa kwa parameta ya -Mwanachama. Kila kitu cha mtumiaji kinaongezwa kwa kikundi cha Wafanyakazi wa Chicago. Haijalishi ikiwa tunashughulika na watumiaji 5 au 5000, kusasisha uanachama wa kikundi huchukua sekunde chache tu. Usemi huu pia unaweza kuandikwa kwa kutumia KwaKila Kitu nini kinaweza kuwa rahisi zaidi:

PS C:\> Get-ADUser -filter "city -eq "Chicago"" | foreach (Ongeza-ADGroupMember "Chicago Employees" -Mwanachama $_)

Kazi ya 7: Orodhesha washiriki wa kikundi

Unaweza kutaka kujua ni nani aliye katika kundi fulani. Kwa mfano, unapaswa kujua mara kwa mara nani ni mwanachama wa kikundi cha Wasimamizi wa Vikoa:

PS C:\> Get-ADGroupMember "Wasimamizi wa Kikoa"

Kielelezo 4 kinaonyesha matokeo.


Mchele. 4. Wanachama wa kikundi cha Wasimamizi wa Kikoa

cmdlet inaonyesha kitu AD kwa kila mwanachama wa kikundi. Nini cha kufanya na vikundi vilivyoorodheshwa? Kikundi changu cha Watumiaji Wote wa Chicago ni mkusanyiko wa vikundi vilivyowekwa. Ili kupata orodha ya akaunti zote, lazima nitumie parameta -Kujirudia.

PS C:\> Get-ADGroupMember "Chicago All Users" -Recursive | Chagua Jina Lililojulikana

Ikiwa unataka kwenda kwa njia nyingine - tafuta ni vikundi gani mtumiaji yuko - tumia mali ya mtumiaji MwanachamaWa:

PS C:\> get-aduser jfrost -property Memberof | Chagua -ExpandProperty memberOf CN=NewTest,OU=Groups,OU=Employees, DC=GLOBOMANTICS,DC=local CN=Chicago Test,OU=Groups,OU=Employees, DC=GLOBOMANTICS,DC=local CN=Chicago IT,OU= Vikundi,OU=Wafanyakazi, DC=GLOBOMANTICS,DC=local CN=Watumiaji wa Mauzo wa Chicago,OU=Vikundi,OU=Wafanyakazi, DC=GLOBOMANTICS,DC=local

Nilitumia kigezo -PanuaMali kuonyesha majina MwanachamaWa kama mistari.

Hatua ya 8: Tafuta akaunti za kompyuta zilizopitwa na wakati

Ninaulizwa swali hili mara nyingi: "Ninawezaje kupata akaunti za zamani za kompyuta?" Na mimi hujibu kila wakati: "Ni nini kimepitwa na wakati kwako?" Makampuni yana ufafanuzi tofauti wa wakati akaunti ya kompyuta (au akaunti ya mtumiaji, haijalishi) inachukuliwa kuwa ya kizamani na haiwezi kutumika tena. Kwangu, ninatilia maanani akaunti hizo ambazo nywila zao hazijabadilishwa kwa muda fulani. Kipindi hiki kwangu ni siku 90 - ikiwa kompyuta haijabadilisha nenosiri pamoja na kikoa katika kipindi hiki, kuna uwezekano mkubwa kwamba iko nje ya mtandao na imepitwa na wakati. Cmdlet imetumika Pata-ADComputer:

PS C:\> get-adcomputer -filter "Passwordlastset -lt "1/1/2012"" -properties *| Chagua jina, nenosirilastset

Kichujio hufanya kazi vizuri kwa thamani ngumu, lakini msimbo huu utasasishwa kwa akaunti zote za kompyuta ambazo hazijabadilisha manenosiri yao tangu Januari 1, 2012. Matokeo yanaonyeshwa kwenye Mchoro 5.


Mchele. 5. Tafuta akaunti za kompyuta zilizopitwa na wakati

Chaguo jingine: hebu tufikirie wewe ni angalau katika ngazi ya kazi ya kikoa cha Windows 2003. Chuja kwa mali LastLogotimeStamp. Thamani hii ni idadi ya vipindi 100 vya nanosecond tangu Januari 1, 1601, na imehifadhiwa katika GMT, kwa hivyo kufanya kazi na thamani hii ni gumu kidogo:

PS C:\> pata-adcomputer -chuja "LastlogonTimestamp -gt 0" -sifa * | chagua jina,lastlogontimestamp, @(Jina="LastLogon";Expression=(::FromFileTime ($_.Lastlogontimestamp))),passwordlastset | Panga LastLogonTimeStamp


Mchele. 6. Badilisha thamani ya LastLogonTimeStamp kuwa umbizo linalofahamika

Ili kuunda kichujio, ninahitaji kubadilisha tarehe, kwa mfano Januari 1, 2012, kuwa muundo sahihi. Uongofu unafanywa katika FileTime:

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

Sasa naweza kutumia utaftaji huu kwenye kichungi Pata-ADComputer:

PS C:\> Pata-ADComputer -Chuja "(lastlogontimestamp -lt $cutoff) -au (lastlogontimestamp -sio kama "*")" -property * | Chagua Jina,LastlogonTimestamp,NenosiriMwishoSet

Nambari iliyo hapo juu hupata kompyuta sawa na zilizoonyeshwa kwenye Mchoro 5.

Hatua ya 9: Zima akaunti ya kompyuta

Labda unapopata akaunti zisizotumika au zilizopitwa na wakati, utataka kuzizima. Hii ni rahisi sana kufanya. Tutatumia cmdlet ile ile tuliyokuwa tukifanya kazi na akaunti za watumiaji. Unaweza kufafanua kwa kutumia jina la akaunti akaunti.

PS C:\> Zima-ADAccount -Identity "chi-srv01$" -whatif Je kama: Kufanya operesheni "Weka" kwenye Lengo "CN=CHI-SRV01, CN=Computers,DC=GLOBOMANTICS,DC=local".

Au kwa kutumia usemi wa bomba:

PS C:\> get-adcomputer "chi-srv01" | Lemaza-Akaunti ya ADA

Ninaweza pia kutumia nambari yangu kupata akaunti zilizopitwa na wakati na kuzizima zote:

PS C:\> get-adcomputer -filter "Passwordlastset -lt "1/1/2012"" -properties *| Lemaza-Akaunti ya ADA

Hatua ya 10: Tafuta kompyuta kwa aina

Pia mara nyingi mimi huulizwa jinsi ya kupata akaunti za kompyuta kwa aina, kama vile seva au vituo vya kazi. Hii inahitaji ubunifu fulani kwa upande wako. Hakuna kitu katika AD ambacho hutofautisha seva kutoka kwa mteja, isipokuwa labda OS. Ikiwa kompyuta yako inaendesha Windows Server 2008, itabidi ufanye hatua chache za ziada.
Kwanza, unahitaji kupata orodha ya mifumo ya uendeshaji, na kisha tunachuja akaunti kwa mifumo ya uendeshaji inapatikana.

PS C:\> Pata-ADComputer -Chuja * -Properties Operating System | Chagua OperatingSystem -ya kipekee | Panga Mfumo wa Uendeshaji

Matokeo yanaonyeshwa kwenye Mchoro 7.


Mchele. 7. Kurejesha orodha ya OS

Ninataka kupata kompyuta zote zinazoendesha OS ya seva:

PS C:\> Pata-ADComputer -Chuja "OperatingSystem -kama "*Seva*"" -properties OperatingSystem,OperatingSystem ServicePack | Chagua Jina,Op* | orodha ya muundo

Matokeo yanaonyeshwa kwenye Mchoro 8.

Kama AD zingine Pata cmdlets, unaweza kubinafsisha vigezo vya utafutaji na uweke kikomo ombi kwa OU maalum ikiwa ni lazima. Maneno yote ambayo nimeonyesha yanaweza kuunganishwa katika misemo kubwa ya PowerShell. Kwa mfano, unaweza kupanga, kupanga, kutumia vichujio, kuhamisha kwa CSV, au kuunda na kutuma ripoti za HTML barua pepe - zote kutoka PowerShell! Katika kesi hii, hautalazimika kuandika hati moja.
Hii hapa ni bonasi: ripoti ya umri wa nenosiri la mtumiaji, iliyohifadhiwa katika faili ya HTML:

PS C:\> Pata-ADUser -Chuja "Imewashwa -eq "Kweli" -NA NenosiriHaijaisha -eq "Uongo"" -Properties PasswordLastSet,PasswordNeverExpires,NeverExpired | Chagua DistinguishedName,Name,pass*,@(Jina="PasswordAge"; Expression=((Pata-Tarehe)-$_.PasswordLastSet)) |panga PasswordAge -Kushuka | ConvertTo-Html -Kichwa "Ripoti ya Umri wa Nenosiri" | Out-File c:\Work\pwage.htm !}

Ingawa usemi huu unaweza kuonekana wa kuogofya kidogo, ni rahisi kutumia ukiwa na ujuzi mdogo wa PowerShell. Na ushauri mmoja tu wa mwisho unabaki: jinsi ya kufafanua mali ya desturi inayoitwa PasswordAge. Thamani inawakilisha pengo kati ya leo na kipengele cha PasswordLastSet. Kisha mimi hupanga matokeo ya mali yangu mpya. Kielelezo cha 9 kinaonyesha matokeo ya kikoa changu kidogo cha majaribio.

Sasisha:
Chapisho lina tafsiri ya makala kwenye lango

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

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:

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 uandishi 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 aina. 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 kipengele 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.


Ikiwa inataka, unaweza kuongeza chati ya muhtasari, pia kwenye kichupo cha "Ingiza". 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