A blogban leírtak a szerzők saját véleménye, és nem a munkáltatójuké.

Active Directory tesztadatok generálása

Az IRF tárgy virtuális gépeinek elkészítése kapcsán felmerült, hogy célszerű lenne az Active Directory-t feltölteni nagyobb mennyiségű tesztadattal. Így a címtárakról szóló házi feladatnál már látszana, hogy egy tisztességes címtárban nem tíz darab felhasználó van. Mivel senkinek nem volt kedve párezer felhasználót felvenni, ezért valamilyen más megoldást próbáltunk keresni.

A neten akadnak azért tesztadatok AD-hez, viszont ezek vagy nem voltak megfelelők nekünk (például nem volt benne hierarchikus tárolás), vagy pedig jogilag nem voltak teljesen tiszták. Így maradt az a megoldás, hogy mi magunk készítjük el a felhasználókat, csoportokat, OU-kat. Ennek a folyamatát írtam le ebben a posztban.

  1. Először ki kellett találni, hogy mi legyen a kerettörténet. Egy néhányezer fős vállalatot kellett kitalálni, aminek sok külön szervezeti egysége van. Így létrejött a SuperHotels cég, amely jelentős méretű vezetőséggel és számos hotellel rendelkezik szerte a világon.
  2. Ez után megterveztem az OU-k hierarchiáját. A tervezésnél az volt a cél, hogy átlátható legyen a hierarchia, úgyhogy egy mindmapként rajzoltam meg FreeMindban.
  3. A generálást (részben személyes perverzióknál fogva) Excelben akartam megcsinálni. Szerencsére nem kellett újra begépelni az OU-kat: a FreeMindból HTML-ben kiexportált mindmap Excelbe beillesztve egészen könnyen használhatóvá alakítható volt.
  4. Ebből előállítottam az OU-k DN-jét, beállítottam, hogy melyik tartalmaz majd ténylegesen felhasználókat és melyik nem, illetve azt is, hogy melyikhez hány felhasználót kell generálni.
  5. Készítettem egy rakás felhasználót is. Ehhez a kiindulópont egy-egy lista volt az európai leggyakoribb vezeték- és keresztnevekről. Ebből véletlenszerűen válogattam, illetve ez alapján legeneráltam a loginneveket is. (Figyelni kellett arra, hogy loginnevek közt bőven lehet ütközés, ezért az azonos neveket számokkal megkülönböztettem.) Minden felhasználóhoz rendeltem 1-1 OU-t is a számossági kényszerek alapján.
    Mindezt úgy, hogy tetszőlegesen sok véletlen tesztadatsor legyen előállítható, úgyhogy mindent Excel-függvények, különösen a VÉL() használatával oldottam meg. (Mivel így elég számításigényes minden frissítés, célszerű a cellák értékének automatikus újraszámítását kikapcsolni.)
  6. Innen már csak össze kellett válogatni úgy az oszlopokat, hogy azokból CSV-fájlt lehessen generálni, majd utána azt az csvde eszköz be tudja importálni.
    A CSV-be mentéshez makrókat használtam, több ok miatt is. Egyrészt így automatikusan generálhatók a fájlok (külön csv-be kerültek az OU-k, a felhasználók és a különböző típusú csoportok), illetve az ezek feltöltését összefogó batch fájl is. Másrészt magyar nyelvű Office-t használtam, amiből GUI-n csak pontosvesszővel elválasztott CSV-fájl készíthető, a csvde viszont ragaszkodik a vesszőkhöz. Szerencsére ha VBA-ból az ActiveWorkbook.SaveAs FileFormat:=xlCSV eljárással mentünk, akkor nyelvfüggetlenül vesszőket fog elválasztóként használni.
  7. Ezután már (viszonylag) egyenes az út. Persze az első pártucat batch feltöltés CSV-ből nem volt sikeres, ráadásul a csvde sem túl készséges a hibák okának feltárásában (bár a naplózás egy kicsit segít), de sikerült elérni egy működő változathoz.
  8. Példaként álljon itt egy kimenete a generálásnak. A fentiekhez képest még néhány random csoport is van benne, illetve minden OU-hoz készül 1-1 olyan csoport, ami a benne szereplő felhasználókat fogja össze. Ezek tagságai nem Excelből kerülnek beállításra, hanem egy külön PowerShell szkript gondoskodik róla.

Így már minden adott, hogy lehessen rossz megoldásokat is írni az IRF házi feladatok során: ha valaki ezer lekérdezés helyett egymilliót fog csinálni, az fel fog tűnni a futásidőben.

Leave a Reply

 

 

 

You can use these HTML tags

<a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong>