Otsige Active Directoryst passiivseid kasutajaid. Excel PowerShelli asemel: päringud AD-le ja süsteemiaruanded "põlve peal"

Kasutatakse kataloogiobjektide loomiseks, muutmiseks ja kustutamiseks. Kasutaja saab kasutada ka käsku ldifde skeemi laiendamiseks eksportige Active Directory kasutaja- ja rühmateave teistesse rakendustesse või teenustesse ning täitke ADAM-i (Active Directory Application Mode) teenus muude kataloogiteenuste andmetega.

Süntaks

ldifde [-i] [-f faili nimi] [-s serveri_nimi] [-c rida1 rida2] [-v] [-j tee] [-t pordi_number] [-d DN_base] [-r filter_LDAP] [-lk piirkond] [-l LDAP_atribuutide_loend] [-o LDAP_atribuutide_loend] [-g] [-m] [-n] [-k] [-a ] [-b ] [-? ]

Valikud

-i Määrab impordirežiimi. Kui parameeter pole määratletud, kasutatakse vaikimisi ekspordirežiimi. -ffaili nimi Määrab impordi- või ekspordifaili nime. -sserveri_nimi Määrab arvuti, milles impordi või ekspordi toiming tuleks läbi viia. Vaikimisi programm ldifde käivitatakse arvutis, kus ldifde paigaldatud. -crida1 rida2 Asendab kõik esinemised read1 sisu read2. Tavaliselt kasutatakse siis, kui impordite andmeid ühest domeenist teise ja peate asendama eksporditava domeeni eristava nime ( rida1), domeeninime import ( rida2). -v Lubab üksikasjaliku logimisrežiimi. -jtee Määrab logifaili asukoha. Vaikimisi on praegune tee. -tpordi_number Määrab LDAP (Lightweight Directory Access Protocol) pordi numbri. Vaikimisi LDAP-port on 389. Globaalse kataloogi port on 3268. -dDN_base Määrab andmete eksportimiseks otsingubaasi eristava nime. -rLDAP filter Loob andmete eksportimiseks LDAP-otsingufiltri. Näiteks järgmine filter ekspordib kõik kindla keskmise nimega kasutajad: csvde -r (ja(objectClass=Kasutaja)(sn=Perekonnanimi)) -lkpiirkond Määrab otsinguala. Otsingu ulatuse parameetrid on Alus, OneLevel Ja Alampuu. -lLDAP_atribuutide_loend Määrab ekspordipäringu tulemustes tagastatud atribuutide loendi. Kui see parameeter välja jäetakse, tagastatakse kõik atribuudid. -oLDAP_atribuutide_loend Määrab atribuutide loendi, mida ekspordipäringu tulemuste hulgast välja jätta. Seda suvandit kasutatakse tavaliselt objektide eksportimisel Active Directoryst ja seejärel teise LDAP-ga ühilduvasse kataloogi importimisel. Kui mõni muu kataloog mõnda atribuuti ei toeta, saab need selle suvandi abil tulemuste komplektist välja jätta. -g Kõrvaldab leheotsingud. -m Jätab välja atribuudid, mida ei saa kirjutada, nt ObjectGUID Ja objektiSID. -n Jätab kahendväärtuste ekspordi vahele. -k Eirab imporditoimingu ajal tekkinud vigu ja jätkab töötlemist. Järgmine on ignoreeritud vigade täielik loend.

  • objekt on juba rühma liige;
  • objektiklassi rikkumine (see tähendab, et määratud objektiklassi pole olemas), kui imporditud objektil pole muid atribuute;
  • objekt on juba olemas;
  • piirangu rikkumine;
  • atribuut või väärtus on juba olemas;
  • sellist objekti pole olemas.
-aeristatud_nimi_parool Määrab määratud käsu abil käsu täitmise eristatav_nimi_kasutaja_nimi Ja parool -b. -bkasutajanime domeeni parool Määrab määratud käsu abil täidetava käsu kasutajanimi, domeen ja parool. Vaikimisi täidetakse käsk selle kasutaja mandaate kasutades, kes on praegu võrku sisse logitud. Ei saa kasutada koos parameetriga -a. -? Kuvab käskude menüü.

Märkmed

  • Koos parameetriga -c võite kasutada konstante #schemaNamingContext Ja #configurationNamingContext skeemi kataloogi partitsiooni ja konfiguratsioonikataloogi partitsiooni erinimede asemel.
  • Käsu jaoks impordifaili loomisel ldifde, kasutage väärtust muudaTüüpi et määrata impordifailis sisalduvate muudatuste tüüp. Väärtused muudaTüüpi on toodud allolevas tabelis.

Allpool on näide LDIF-vormingus LDAP-impordifailist, mis kasutab väärtust lisada:
DN: CN=valitud_kasutaja,DC=domeeni_nimi
muuda tüüp: lisada
CN: valitud_kasutaja
kirjeldus:faili_kirjeldus
objektiklass: kasutaja
objektiklass: valitud_kasutaja

Näited

Ainult tagastatud objektide eristava nime, üldnime, eesnime, perekonnanime ja telefoninumbri eraldamiseks sisestage:
-l eristatav_nimi, CN, Nimi, S.N. telefon
Objekti globaalse kordumatu identifikaatori (GUID) välistamiseks sisestage:
-o millal_loodud, millal_muutus, objekt_GUID

Pühendatud PowerShelli kasutamisele AD haldamiseks. Alustuseks otsustas autor võtta 10 levinud AD-haldusülesannet ja vaadata, kuidas neid PowerShelli abil lihtsustada:

  1. Lähtestage kasutaja parool
  2. Kontode aktiveerimine ja deaktiveerimine
  3. Avage kasutajakonto
  4. Kustuta konto
  5. Otsige tühjad rühmad
  6. Kasutajate lisamine gruppi
  7. Loetlege rühma liikmed
  8. Otsige üles aegunud arvutikontod
  9. Deaktiveerige arvutikonto
  10. Otsige arvuteid tüübi järgi

Lisaks peab autor blogi (kasutades muidugi PowerShelli), soovitame pilk peale visata - jdhitsolutions.com/blog. Ja kõige värskemat teavet saate tema Twitterist twitter.com/jeffhicks.
Niisiis, allpool on tõlge artiklist "PowerShelli abil lahendatud 10 parimat Active Directory ülesannet".

Active Directory (AD) haldamine Windows PowerShelli abil on lihtsam, kui arvate, ja ma tahan seda teile tõestada. Võite lihtsalt võtta allolevad skriptid ja kasutada neid mitmete AD-haldusülesannete lahendamiseks.

Nõuded

PowerShelli kasutamiseks AD haldamiseks peate vastama mitmele nõudele. Näitena näitan, kuidas AD cmdlet-käsud töötavad, kasutades näitena Windows 7 arvutit.
cmdlet-käskude kasutamiseks peab teil olema Windows Server 2008 R2 domeenikontroller või saate alla laadida ja installida Active Directory halduslüüsi teenuse pärand-DC-desse. Enne paigaldamist lugege hoolikalt läbi dokumentatsioon; Nõutav CD taaskäivitamine.
Kliendi poolel laadige alla ja installige (RSAT) kas Windows 7 või Windows 8 jaoks. Windows 7 puhul peate sisse avama Juhtpaneelid peatükk Programmid ja vali Lülitage Windowsi funktsioonid sisse või välja. Otsi Serveri kaughaldustööriistad ja laiendage jaotist Rollihaldustööriistad. Valige AD DS-i ja AD LDS-i tööriistade jaoks sobivad üksused, eriti pange tähele, et üksus tuleb valida Active Directory moodul Windows PowerShelli jaoks, nagu on näidatud joonisel 1. (Windows 8-s on kõik tööriistad vaikimisi valitud). Nüüd oleme valmis tööle.

Joon.1 AD DS ja AD LDS tööriistade lubamine

Olen sisse logitud domeeni administraatoriõigustega kontoga. Enamik kuvatavaid cmdlet-käske võimaldab teil määrata alternatiivseid mandaate. Igal juhul soovitan abi lugeda ( Hankige abi) ja näited, mida ma allpool demonstreerin.
Käivitage PowerShelli seanss ja importige moodul:

PS C:\> Impordi moodul ActiveDirectory

Importimine loob uue PSDrive'i, kuid me ei kasuta seda. Küll aga näete, millised käsud on imporditud moodulis saadaval.

PS C:\> get-command -moodul ActiveDirectory

Nende käskude ilu seisneb selles, et kui ma saan kasutada käsku ühe AD-objekti puhul, siis saab seda kasutada ka 10, 100 ja isegi 1000 puhul. Vaatame, kuidas mõned neist cmdlet-käskudest töötavad.

Ülesanne 1: lähtestage kasutaja parool

Alustame tüüpilise ülesandega: kasutaja parooli lähtestamine. Seda saate teha lihtsalt ja lihtsalt cmdleti abil Set-ADAccountPassword. Keeruline osa on see, et uus parool peab olema kvalifitseeritud kaitstud stringina: tekstiosa, mis on krüptitud ja salvestatud mällu PowerShelli seansi ajaks. Kõigepealt loome uue parooliga muutuja:
PS C:\> $new=Read-Host "Sisesta uus parool" -AsSecureString

Seejärel sisestage uus parool:

Nüüd saame konto ekstraktida (kasutades samAccountname– parim valik) ja määrake uus parool. Siin on näide kasutaja Jack Frosti kohta:

PS C:\> Set-ADAccountPassword jfrost -UusParool $uus

Kahjuks on selles cmdletis viga: - Passthru, - Mis siis, Ja – Kinnita ei tööta. Kui eelistate otseteed, proovige seda:

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

Seetõttu pean Jackil järgmisel sisselogimisel oma parooli muutma, seega muudan kontot kasutades Set-ADUser.

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

cmdleti käitamise tulemusi konsooli ei kirjutata. Kui seda on vaja teha, kasutage — Tõsi. Kuid ma saan teada, kas toiming õnnestus või mitte, hankides cmdleti abil kasutajanime Hankige ADUser ja vara täpsustamine Parool aegunud, nagu on näidatud joonisel 2.


Riis. 2. Get-ADUser cmdleti tulemused atribuudiga PasswordExpired

Alumine rida: kasutaja parooli lähtestamine PowerShelli abil pole üldse keeruline. Tunnistan, et ka parooli lähtestamine on kiirelt lihtne Active Directory kasutajad ja arvutid konsoolid Microsofti halduskonsool (MMC). Kuid PowerShelli kasutamine on asjakohane, kui teil on vaja ülesannet delegeerida, te ei soovi ülalnimetatud lisandmoodulit juurutada või lähtestate parooli suure automatiseeritud IT-protsessi osana.

Ülesanne 2: kontode aktiveerimine ja deaktiveerimine

Nüüd deaktiveerime konto. Jätkame koostööd Jack Frostiga. See kood kasutab parameetrit — Mis siis, mille leiate teistest komadletidest, mis teevad muudatusi minu käsu testimiseks ilma seda käivitamata.

PS C:\> Disable-ADAccount jfrost -whatif Mis siis, kui: toimingu "Set" sooritamine sihtmärgil "CN=Jack Frost, OU=personal,OU=Testing,DC=GLOBOMANTICS,DC=local".

Nüüd deaktiveerime selle päriselt:

PS C:\> Keela-ADAAccount jfrost

Ja kui saabub aeg konto aktiveerida, siis milline cmdlet meid aitab?

PS C:\> Enable-ADAccount jfrost

Neid cmdlet-käske saab kasutada konveieravaldisena, mis võimaldab teil aktiveerida või deaktiveerida nii palju kontosid, kui soovite. Näiteks deaktiveerib see kood kõik müügiosakonna kontod

PS C:\> get-aduser -filter "osakond -eq "müük"" | konto keelamine

Muidugi kirjutage jaoks filter Hankige ADUserüsna keeruline, kuid see on koht, kus parameetri kasutamine — Mis siis koos cmdletiga Keela-ADA-konto tuleb appi.

Ülesanne 3: avage kasutajakonto

Mõelge olukorrale, kus Jack lukustas oma konto uue parooli sisestamisel. Selle asemel, et proovida oma kontot GUI kaudu leida, saab avamisprotseduuri teha lihtsa käsuga.

PS C:\> Unlock-ADAAccount jfrost

cmdlet toetab ka parameetreid - Mis siis Ja - Kinnita.

Ülesanne 4: konto kustutamine

Pole tähtis, kui palju kasutajaid eemaldate – seda on cmdleti abil lihtne teha Eemalda-ADUser. Ma ei taha Jack Frosti eemaldada, kuid kui tahaksin, kasutaksin sellist koodi:

PS C:\> Remove-ADUser jfrost -whatif Mis siis, kui: toimingu "Remove" sooritamine sihtmärgil "CN=Jack Frost,OU=personal,OU=Testing,DC=GLOBOMANTICS,DC=local".

Või saan sisestada mitu kasutajat ja need kustutada ühe lihtsa käsuga:

PS C:\> get-aduser -filter "enabled -eq "false"" -omadus WhenChanged -SearchBase "OU=Töötajad, DC=Globomantika,DC=Kohalik" | kus ($_.WhenChanged -le (Get-Date).AddDays(-180)) | Eemalda-ADuser -Whatif

See käsk otsib ja kustutab kõik keelatud töötajate OU kontod, mida ei ole muudetud 180 päeva või kauem.

Ülesanne 5: tühjade rühmade leidmine

Gruppide juhtimine on lõputu ja tänamatu ülesanne. Tühjade rühmade leidmiseks on palju võimalusi. Mõned väljendid võivad teie organisatsioonist olenevalt toimida paremini kui teised. Allolev kood leiab kõik domeeni rühmad, sealhulgas sisseehitatud.

PS C:\> get-adgroup -filter * | kus (-Not ($_ | get-adgroupmember)) | Valige Nimi

Kui teil on sadade liikmetega gruppe, võib selle käsu kasutamine võtta kaua aega; Hangi-ADGroupLiige kontrollib iga rühma. Kui saate piirata või kohandada, on see parem.
Siin on veel üks lähenemisviis:

PS C:\> get-adgroup -filter "liikmed -mittelike "*" -AND GroupScope -eq "Universal"" -SearchBase "OU=Groups,OU=Töötajad,DC=Globomantika, DC=kohalik" | Valige nimi, rühm*

See käsk otsib kõik universaalsed rühmad, millel ei ole OU rühmade liikmelisust, ja kuvab mõned atribuudid. Tulemus on näidatud joonisel 3.


Riis. 3. Otsige ja filtreerige universaalseid rühmi

Ülesanne 6: kasutajate lisamine gruppi

Lisame Jack Frosti Chicago IT-gruppi:

PS C:\> add-adgroupmember "chicago IT" -liikmed jfrost

Jah, see on nii lihtne. Saate hõlpsasti lisada rühmadesse sadu kasutajaid, kuigi minu arvates on see pisut ebamugav:

PS C:\> Add-ADGroupMember "Chicago töötajad" -liige (get-aduser -filter "city -eq "Chicago")

Kasutasin sulgudes konveierlauset, et leida kõik kasutajad, kellel on Chicagos atribuut City. Sulgudes olev kood käivitatakse ja saadud objektid edastatakse parameetrile –Member. Iga kasutajaobjekt lisatakse Chicago töötajate rühma. Pole vahet, kas tegemist on 5 või 5000 kasutajaga, grupi liikmelisuse värskendamine võtab vaid mõne sekundi. Seda väljendit saab kirjutada ka kasutades Iga objekti jaoks mis võiks olla mugavam:

PS C:\> Get-ADUser -filter "city -eq "Chicago"" | foreach (Add-ADGroupLiige "Chicago töötajad" -liige $_)

Ülesanne 7: loetlege rühmaliikmed

Võib-olla soovite teada, kes teatud rühma kuuluvad. Näiteks peaksite aeg-ajalt uurima, kes on domeeni administraatorite grupi liige:

PS C:\> Get-ADGroupMember "Domeeni administraatorid"

Joonis 4 näitab tulemust.


Riis. 4. Domeeniadministraatorite rühma liikmed

cmdlet kuvab iga rühmaliikme AD-objekti. Mida teha pesastatud rühmadega? Minu grupp Chicago Kõik kasutajad on pesastatud rühmade kogu. Kõigi kontode loendi saamiseks pean lihtsalt parameetrit kasutama - Rekursiivne.

PS C:\> Get-ADGroupMember "Chicago kõik kasutajad" -Rekursiivne | Valige DistinguishedName

Kui soovite minna teist teed - otsige üles, millistes rühmades kasutaja on - kasutage kasutaja atribuuti liige:

PS C:\> get-aduser jfrost -property Memberof | Valige -ExpandProperty memberOf CN=NewTest,OU=Groups,OU=Töötajad, DC=GLOBOMANTICS,DC=kohalik CN=Chicago test,OU=Grupid,OU=Töötajad, DC=GLOBOMANTICS,DC=kohalik CN=Chicago IT,OU= Grupid,OU=töötajad, DC=GLOBOMANTICS,DC=kohalik CN=Chicago müügikasutajad,OU=grupid,OU=töötajad, DC=GLOBOMANTICS,DC=kohalik

Kasutasin parameetrit -Laienda Property nimede kuvamiseks liige nagu jooned.

Ülesanne 8: otsige üles aegunud arvutikontod

Minult küsitakse sageli seda küsimust: "Kuidas leida aegunud arvutikontosid?" Ja ma vastan alati: "Mis on teie jaoks aegunud?" Ettevõtetel on erinevad määratlused selle kohta, millal arvutikonto (või kasutajakonto, vahet pole) loetakse aegunuks ja seda ei saa enam kasutada. Minu jaoks pööran tähelepanu nendele kontodele, mille paroole pole teatud aja jooksul muudetud. Minu jaoks on see periood 90 päeva - kui arvuti pole selle perioodi jooksul parooli koos domeeniga vahetanud, on see tõenäoliselt võrguühenduseta ja aegunud. Kasutatud cmdlet Hangi-ADComputer:

PS C:\> get-adcomputer -filter "Passwordlastset -lt "1/1/2012"" -omadused *| Valige nimi, parooli viimane komplekt

Filter töötab suurepäraselt kõva väärtusega, kuid seda koodi värskendatakse kõigi arvutikontode puhul, mis pole pärast 1. jaanuari 2012 oma paroole muutnud. Tulemused on näidatud joonisel 5.


Riis. 5. Otsige üles aegunud arvutikontod

Teine võimalus: oletame, et olete vähemalt Windows 2003 domeeni funktsionaalsel tasemel Filtreeri atribuudi järgi LastLogontimeStamp. See väärtus on 100 nanosekundiliste intervallide arv alates 1. jaanuarist 1601 ja see on salvestatud GMT-s, seega on selle väärtusega töötamine veidi keeruline:

PS C:\> get-adcomputer -filter "LastlogonTimestamp -gt 0" -properties * | vali nimi,lastlogontimestamp, @(Name="LastLogon";Expression=(::FromFileTime ($_.Lastlogontimestamp))),passwordlastset | Sorteeri LastLogonTimeStamp


Riis. 6. Teisendage LastLogonTimeStamp väärtus tuttavasse vormingusse

Filtri loomiseks pean teisendama kuupäeva, näiteks 1. jaanuar 2012, õigesse vormingusse. Teisendamine toimub FileTime'is:

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

Nüüd saan seda muutujat filtris kasutada Hangi-ADComputer:

PS C:\> Get-ADComputer -Filter "(lastlogontimestamp -lt $cutoff) -või (lastlogontimestamp -notlike "*")" -omadus * | Valige nimi, viimane sisselogimise ajatempel, parool, viimane komplekt

Ülaltoodud kood leiab samad arvutid, mis olid näidatud joonisel 5.

Ülesanne 9: desaktiveerige arvutikonto

Võib-olla soovite passiivsete või aegunud kontode leidmisel need desaktiveerida. Seda on üsna lihtne teha. Kasutame sama cmdlet-i, mida kasutasime kasutajakontodega töötamiseks. Saate seda selgitada kasutades samAccountname konto.

PS C:\> Disable-ADAccount -Identity "chi-srv01$" -Whatif Mis siis, kui: toimingu "Set" sooritamine sihtmärgil "CN=CHI-SRV01, CN=Computers,DC=GLOBOMANTICS,DC=local".

Või kasutades konveieri avaldist:

PS C:\> get-adcomputer "chi-srv01" | Keela-ADA-konto

Samuti saan kasutada oma koodi aegunud kontode leidmiseks ja nende kõigi desaktiveerimiseks:

PS C:\> get-adcomputer -filter "Passwordlastset -lt "1/1/2012"" -omadused *| Keela-ADA-konto

Ülesanne 10: Otsige arvutid tüübi järgi

Samuti küsitakse sageli, kuidas leida arvutikontosid tüübi järgi (nt serverid või tööjaamad). See nõuab teielt teatud loovust. AD-s pole miski, mis eristaks serverit kliendist, välja arvatud ehk OS. Kui teie arvutis töötab Windows Server 2008, peate tegema mõned lisatoimingud.
Esiteks peate hankima operatsioonisüsteemide loendi ja seejärel filtreerime kontod saadaolevate operatsioonisüsteemide järgi.

PS C:\> Get-ADComputer -Filter * -Operties OperatingSystem | Valige Operatsioonisüsteem -unikaalne | Sorteeri operatsioonisüsteem

Tulemused on näidatud joonisel 7.


Riis. 7. OS-i loendi toomine

Soovin leida kõik arvutid, milles töötab serveri OS:

PS C:\> Get-ADComputer -Filter "OperatingSystem -nagu "*Server*"" -omadused Operatsioonisüsteem,Operatsioonisüsteemi hoolduspakett | Valige Nimi,Op* | formaat-loend

Tulemused on näidatud joonisel 8.

Sarnaselt teistele AD Get-i cmdlet-käskudele saate kohandada otsinguparameetreid ja vajaduse korral piirata päringu konkreetsete OU-dega. Kõiki minu näidatud väljendeid saab integreerida suurematesse PowerShelli avaldistesse. Näiteks saate sortida, rühmitada, rakendada filtreid, eksportida CSV-vormingusse või luua ja meilida HTML-aruandeid – kõike seda PowerShellist! Sel juhul ei pea te kirjutama ühte skripti.
Siin on boonus: kasutaja parooli vanuse aruanne, mis on salvestatud HTML-faili:

PS C:\> Get-ADUser -Filter "Lubatud -eq "True" -AND PasswordNeverExpires -eq "False"" -Atribuudid ParoolLastSet,PasswordNeverExpires,PasswordExpired | Valige DistinguishedName,Name,pass*,@(Nimi="ParooliAge"; Väljend=((Hankimiskuupäev)-$_.Parooli viimane komplekt)) |sorteeri ParooliVaus -Kahanev | ConvertTo-Html -Title "Parooli vanuse aruanne" | Out-File c:\Work\pwage.htm !}

Kuigi see väljend võib tunduda pisut hirmutav, on seda lihtne kasutada minimaalsete teadmistega PowerShellist. Ja alles jääb vaid üks viimane nõuanne: kuidas määratleda kohandatud omadust ParoolAge. Väärtus tähistab lõhet tänase ja atribuudi PasswordLastSet vahel. Seejärel sorteerin tulemused oma uue kinnisvara kohta. Joonis 9 näitab minu väikese testdomeeni väljundit.

Uuendus:
Postitus sisaldab portaalis oleva artikli tõlget

Tere päevast, kallid lugejad ja tellijad, jätkame Powershelli ja Active Directory võimaluste uurimist. Nagu mäletate, asuvad kõik tema kasutaja- ja arvutikontod andmebaasis NTDS.dit, kõik on suurepärane ja tsentraliseeritud. Kui ettevõttel on rohkem kui üks süsteemiadministraator, võib tekkida olukord, kus koguneb prügi ja mittevajalikud volikirjad. Me kõik oleme inimesed ja võime mõned asjad unustada ning mõnel hetkel võib meie tähelepanu hajuda, mis viib ka olulise info unustamiseni. Ja jõuame järeldusele, et mitteaktiivsed kasutajad (vallandatud või unustatud) kogunevad igal juhul Actvie kataloogi, hea süsteemiadministraator peaks nad tuvastama, keelama ja seejärel soovi korral kustutama, mida me ka teeme.

ADUC-i lisandmooduli kaudu

Viimati tõin teile juba näite Active Directory kasutajate ja arvutite lisandmooduli kasutamisest, mille kaudu otsisime kohtvõrgus puuduvaid arvuteid, mis polnud kuu aega ilmunud. Nüüd teeme sama ka kasutajakontodega. Mul on Windows Server 2012 R2-s AD, avage ADUC, vajutage selleks WIN+R ja sisestage dsa.msc.

Sisestage avanevale päringuvormile:

  • Taotle nime > minu jaoks on need kadunud kasutajad
  • Vajadusel kirjeldus
  • Request root > siin saate lahkuda kogu domeenist või määrata see soovitud OU-s

Seejärel klõpsake päringu nuppu.

Vahekaardil Kasutajad näeme elementi "Päevade arv alates viimasest sisselogimisest", näiteks määrasin selle väärtuseks 60 päeva.

Selle tulemusena saate nimekirja, mida vajate mitteaktiivsete töötajate kontode kohta.

Powershelli lisandmooduli kaudu

Sama saab teha Powershelli kaudu. Ma annan teile kohe koodi, mille ülesandeks on mitteaktiivsete kasutajate otsimine, selleks valisin 45-päevase perioodi, keelates kasutajaandmed ja liikudes spetsiaalselt määratud OU-sse.

$date_with_offset= (Get-Date).AddDays(-45)
$kasutajad = Get-ADUser -Properties LastLogonDate -Filter (LastLogonDate -lt $date_with_offset ) | Sorteeri LastLogonDate
foreach ($user in $users) (set-aduser $user -enabled $false; move-adobject -identity $user -targetpath "ou=Fired,ou=Moskva L. kasutajad,ou=Asukoht,dc=msk,dc= contoso,dc=com")
Get-ADUser -Properties LastLogonDate -Filter (LastLogonDate -lt $date_with_offset ) | Sorteeri LastLogonDate | FT nimi, LastLogonDate -AutoSize | Väljaspool fail c:\Script\users.txt

  • Esimesel real deklareerite muutuja, milles määrate otsingutermini
  • Loo muutuja ja tee valik viimase sisselogimisaja järgi
  • Kasutajate liigutamine

  • Aruande koostamine faili

Veel kasulikke asju kasutajaga töötamise kohta. Enne allolevate käskude kasutamist peate käsu kaudu laadima Active Directory mooduli

Hankige abi Hankige ADUser

Täna proovime kõigi kasutajate loendi Active Directoryst eraldi faili alla laadida. Meie peamine assistent selles küsimuses on PowerShell. Asi on selles, et Microsoft kavandas algselt PowerShelli käsukonsooli peamise tööriistana Windowsi serverikomponentide haldamiseks. Ja täna, kui meil on juba versioon 2.0, on see üldiselt nii.

Isegi lähiminevikus pidi administraatoritel AD-ga kuidagi suhtlemiseks olema kas dsquery utiliit või mitmesugused skriptid või utiliidid. Täna, alates Windows Server 2008 R2-st, saame töötada AD-ga PowerShelli kaudu. PowerShell 2.0 tulekuga kasutatakse Active Directoryga suhtlemiseks spetsiaalset moodulit Active Directory moodul Windows PowerShelli jaoks, mis sisaldab vajalikku cmdlet-käskude loendit. Oma ülesannete jaoks kasutame käsku Hankige ADUser.

Seega, sõltuvalt sellest, millise operatsioonisüsteemi all me PowerShelli konsooli kasutame, peame tegema "ettevalmistavad toimingud".

1) Kui töötame Windows Serveri all kuni versioonini 2012, siis peame käivitama käsu:

  • Impordi mooduli aktiivne kataloog – käsk mooduli importimiseks AD-sse

Operatsioonisüsteemi versioonide puhul alates 2012. aastast on see moodul juba vaikimisi lubatud.

2) Kui töötame suvalisest Windowsi kliendist, siis tuleb sinna installida RSAT-i kaughalduspakett, millesse on installitud Windows PowerShelli Active Directory moodul.

Väärib märkimist, et Get-ADUser cmdlet-i soovitatakse käivitada, kui üleslaaditavate andmete maht on kuni 1000 kasutajat.

AD-kasutajate eksportimine PowerShelli abil eraldi faili

Kõigepealt kutsume Get-ADUSeri käsu abi. Selle tulemusena saate kõik vajalikud käsud edasiseks haldamiseks.

  • abi Get-ADUser – käsk abi kutsuda

PowerShelli aknas kõigi atribuutidega kasutajate loendi saamiseks peate käivitama järgmise käsu:

  • Get-ADUser -filter * – eksportida AD kasutajate loend

See üleslaadimine ei ole täielikult informatiivne ega mahu kogu vajalikku teavet aknasse. Seetõttu proovime otsingut kitsendada ja kuvada konkreetse kasutaja nimega user1 atribuute:

  • Get-ADUser -identiteedi kasutaja1 -omadused * – konkreetse kasutaja atribuutide eksportimine

Nüüd proovime eksportida kõigi kasutajate loendi koos nende omadustega välisele txt või csv fail:

  • Get-ADUser -filter * -omadused * | Ekspordi-csv -tee c:\users.csv -kodeering Unicode'i – eksportida kasutajad eraldi faili

Tahaksin pöörata erilist tähelepanu võtmele - Unicode'i kodeering. Selle eesmärk on tagada, et vene kirillitsa tähestikku saaks pärast AD-st eksportimist üleslaaditud failis õigesti kuvada. Näiteks Microsoft Exceli kaudu näeme vene tähtede asemel küsimärke.

Faili vaatamisel eksporditakse andmed ühe reaga ja seetõttu ei ole need loetavad. Selle muutmiseks peame tegema järgmist.

Eelmise artikli kommentaarides meenus meile raamatupidamine 1C asemel Excelis. Noh, kontrollime, kui palju te Exceli tunnete. Täna näitan teile, kuidas hankida Active Directoryst andmeid ja töötada sellega ilma makrode ja PowerShellita – ainult standardsete Office’i mehhanismidega. Näiteks saate hõlpsalt hankida analüüsi operatsioonisüsteemi kasutamise kohta oma organisatsioonis, kui teil pole veel midagi nagu Microsoft SCOM. Noh, või lihtsalt soojendage ja viige mõtted stsenaariumidelt kõrvale.


Loomulikult saate need andmed, nagu allolevates näidetes, sõna otseses mõttes PowerShellis ühe reaga. Kuid esiteks on PowerShell liiga igav ja teiseks suudab Excel andmeid dünaamiliselt värskendada – saadud dokumendid saab veebis avaldada ja nende uuendamise unustada.

Andmetega töötamiseks kasutan Power Query mehhanismi. Office 2010 ja 2013 jaoks peate installima pistikprogrammi Microsoft Office 2016-l on see moodul juba sisse ehitatud. Kahjuks ei piisa meile standardväljaandest, vajame professionaali.


Mehhanism ise on loodud andmete vastuvõtmiseks ja töötlemiseks erinevatest allikatest – alates vanadest ODBC-st ja tekstifailidest kuni Exchange'i, Oracle'i ja Facebookini. Lisateavet mehhanismi ja sisseehitatud skriptikeele "M" kohta on Habrel juba kirjutatud, kuid ma vaatan paar näidet Power Query kasutamisest andmete hankimiseks Active Directoryst.

Soojendus: vaatame, millal meie kasutajad sisse logisid

Päring domeeni andmebaasi enda jaoks luuakse vahekaardil „Andmed – Uus päring – Muudest allikatest – Active Directoryst”.



Määrake andmeallikas.


Peate valima domeeninime ja esitama vajaliku ühenduse teabe. Järgmisena valige selles näites objektide tüüp - kasutaja. Paremal eelvaate aknas päring juba töötab, kuvades andmete eelvaate.



Koostame päringu ja imetleme eelvaadet.


Peaksite päringu eelnevalt ette valmistama, klõpsates nuppu "redigeeri" ja valides vajalikud veerud. Põhimõtteliselt on need veerud klassid, välja arvatud põhiveerg, mis sisaldab teatud Active Directory objekti atribuute kuvanimi, mis ise on atribuut. Keskendun klassidele kasutaja, inimene, üleval Ja turvalisusPõhimees. Nüüd peate valima igast klassist vajalikud atribuudid, kasutades "laiendit" - veeru päises kahe noolega ikooni:

  • Klass kasutaja laiendada valides lastLogonTimestamp Ja userAccountControl;
  • V inimene valime telefoninumber;
  • V ülevalmillalLoodud;
  • ja sisse turvalisusPõhimeesSamAccountName.


Laiendame taotlust.


Seadistame nüüd filtri: eelkõige selleks, et mitte saada blokeeritud kontosid, peab atribuudi userAccountControl väärtus olema 512 või 66048. Filter võib teie keskkonnas erineda. Lisateavet atribuudi kohta leiate Microsofti dokumentatsioonist.



Filtri rakendamine.


Mõnikord tuvastab Excel valesti andmevormingu, eriti atribuudi lastLogonTimestamp väärtuse. Kui selline ebaõnn teid ootamatult tabab, saate õige vormingu seada vahekaardil "Teisenda".

Nüüd tuleks veerg userAccountControl kustutada – seda pole ekraanil üldse vaja. Ja klõpsake "Laadi alla ja sulgege".


Tulemuseks on taldrik, mis vajab vaid veidi viimistlemist. Näiteks nimetage veerud ümber loetavamaks. Ja seadistage andmete automaatne värskendamine.


Automaatne värskendamine tabeli avamisel või ajalõpu järgi on konfigureeritud jaotise "Atribuudid" vahekaardil "Andmed".



Andmete värskendamise seadistamine.


Pärast uuenduse seadistamist saate tabeli julgelt personaliosakonnale või turvateenistusele üle anda – andke teada, kes ja millal süsteemi sisse logis.


M-keelne päringukood on spoileri all.

las Allikas = ActiveDirectory.Domains("domain.ru"), domeen.ru = Source()[#"Objektikategooriad"], user1 = domain.ru(), #"Remote Columns" = Table.RemoveColumns(user1,() "organizationalPerson", "shadowAccount", "posixAccount", "msExchOmaUser", "msExchBaseClass", "msExchIMRecipient", "msExchCertificateInformation", "msExchMultiMediaUser", "msExchMailStorage", "msExchCustomRecipienme", ")distinguName", "") #"Expanded element securityPrincipal" = Table.ExpandRecordColumn(#"Eemaldatud veerud", "securityPrincipal", ("sAMAccountName"), ("sAMAccountName")), #"Expanded element top" = Table.ExpandRecordColumn(#"Laiendatud elemendi turvalisusPrincipal ", "top", ("whenCreated"), ("whenCreated")), #"Expanded element person" = Table.ExpandRecordColumn(#"Laiendatud element top", "person", ("telefoninumber"), ("telefoninumber" ")), #"Expanded element user" = Table.ExpandRecordColumn(#"Laiendatud elemendi isik", "user", ("lastLogonTimestamp", "userAccountControl"), ("lastLogonTimestamp", "userAccountControl")), #"Read with filter Applik tippige datetime))), #"Remoted columns1" = Table.RemoveColumns(#"Changed type",("userAccountControl")) in #"Remoted columns1"

Aadressiraamatu loomine või mida teha, kui ettevõtte portaal pole AD-ga sõbralik

Teine võimalus Exceli kasutamiseks koos Active Directoryga on luua AD andmete põhjal aadressiraamat. Selge see, et aadressiraamat on ajakohane vaid siis, kui domeen on korras.


Loome objektile päringu kasutaja, laiendage klassi kasutaja V mail, ja klass inimene V telefoninumber. Kustutame kõik veerud v.a eristatavNimi― domeeni struktuur kordab ettevõtte struktuuri, seega nimesid Organisatsiooniüksused vastavad osakondade nimedele. Samamoodi saab turvagruppe kasutada osakondade nimede aluseks.


Nüüd joonelt CN = kasutajanimi, OU = raamatupidamisosakond, OU = osakond, DC = domeen, DC = ru peate osakonna nime otse välja võtma. Lihtsaim viis seda teha on kasutada vahekaardil Teisendus olevaid eraldajaid.



Teksti väljavõtmine.


Eraldajatena kasutan OU= Ja ,OU=. Põhimõtteliselt piisab komast, aga ma mängin julgelt.



Sisestage eraldajad.


Nüüd saate filtrit kasutades ära lõigata mittevajalikud OU, nagu blokeeritud kasutajad ja sisseehitatud, seadistage sorteerimine ja laadige andmed tabelisse.



Kokkuvõtliku tabeli vaade.

Kiire aruanne tööjaamade koostise kohta, ilma aineid või muid ettevalmistusi lisamata

Nüüd proovime luua kasulikku tabelit, hankides arvutitest andmeid. Teeme aruande ettevõtte kasutatavate operatsioonisüsteemide kohta: selleks koostame päringu, kuid seekord valime navigaatoris arvuti.



Teeme päringu arvutiobjektile.


Jätame veeruklassid arvuti Ja üleval ja laiendage neid:

  • Klass arvuti laiendada valides cn, operatsioonisüsteem, Operating SystemServicePack Ja operatsioonisüsteemi versioon;
  • klassis üleval valime millalLoodud.


Täpsem taotlus.


Soovi korral saate teha aruande ainult serveri operatsioonisüsteemide kohta. Näiteks filtreerige atribuudi operationSystem või operationSystemVersion järgi. Ma ei tee seda, aga parandan loomisaja kuva – mind huvitab ainult aasta. Selleks valige vahekaardil „Konversioon“ vajalik veerg ja valige menüüst „Kuupäev“ „Aasta“.



Eraldame aastaarvu ajast, mil arvuti domeeni sisenes.


Nüüd jääb üle vaid kuvatava nime veerg mittevajalikuna kustutada ja tulemus laadida. Andmed on valmis. Nüüd saate nendega töötada nagu tavalise lauaga. Kõigepealt loome vahekaardil "Sisesta" - "Pivot Table" pivot-tabeli. Lepime kokku andmeallika valikuga ja seadistame selle väljad.



Pivot-tabeli välja seaded.


Nüüd jääb üle vaid kujundus oma maitse järgi kohandada ja tulemust imetleda:



AD arvutite koondtabel.


Soovi korral saate lisada kokkuvõtliku diagrammi, ka vahekaardil Lisa. Lisage jaotisesse "Kategooria" (või "Ridadesse" maitse järgi). operatsioonisüsteem, andmetele ― cn. Vahekaardil „Disain” saate valida soovitud diagrammi tüübi.



Sektordiagramm.


Nüüd on selgelt näha, et vaatamata käimasolevale uuendusele on Windows XP-ga tööjaamade ja Windows 2003-ga serverite koguarv üsna suur. Ja on, mille poole püüelda.


Taotluse kood on spoileri all.

las Allikas = ActiveDirectory.Domains("domain.ru"), domeen.ru = Allikas()[#"Objektikategooriad"], arvuti1 = domeen.ru(), #"Remote Columns" = Tabel.EemaldaVeerud(arvuti1,( "user", "organisationPerson", "person")), #"Muud eemaldatud veerud" = Tabel.SelectColumns(#"Remoted columns",("displayName", "computer", "top")), #"Laiendatud üksus computer" = Table.ExpandRecordColumn(#"Muud kaugveerud", "arvuti", ("cn", "operatingSystem", "operatingSystemServicePack", "operatingSystemVersion"), ("cn", "operatingSystem", "operatingSystemServicePack", " operationSystemVersion")), #"Extended top element" = Table.ExpandRecordColumn(#"Laiendatud arvutielement", "top", ("whenCreated"), ("whenCreated")), #"Extracted year" = Table.TransformColumns( #"Expanded element top",(("whenCreated", Date.Year))), #"Remoted columns1" = Table.RemoveColumns(#"Extracted year",("displayName")) in #"Remoted columns1"

Lisa sildid