HyperLink
Bejelentkezés
E-mail: 
Jelszó: 





Skip Navigation Links
 

Active Directory elérése programból - tulajdonságok lekérdezése


Active Directory 1. rész

Példaprogram letöltése

2461 bájt

Az Active Directory teljeskörű támogatást nyújt nem csak az MMC konzolból, hanem programokból történő konfiguráláshoz is. Cikksorozatunk első részében példákon keresztül bemutatjuk, hogy lehet VB szkriptekből elérni és lekérdezni a különböző objektumok tulajdonságait, például felhasználók neve, E-mail címei, csoportnevek, stb. A következő részben ezen tulajdonságok megváltoztatásáról lesz szó.

Cikkünkhöz mellékeltük az alábbiakban szereplő példa szkripteket "MailUser.vbs" és "Computers.vbs" néven. Futtatva az előbbi megjeleníti a képernyőn az E-mail címmel rendelkező felhasználók vagy felhasználói csoportok listáját. Utóbbi pedig kilistázza a tartomány összes kliensgépének nevét.
Szkript példáinkban a "so.zp" tartománynevet használtuk. Más környezetben való felhasználásához ezt módosítani kell.
Az Active Directory-val történő kommunikáció során a rendszer a háttérben az úgynevezett Lightweight Directory Access Protocol (LDAP) protokollt használja. Működési szempontból a TCP/IP-re épül, tulajdonképpen annak kiterjesztéseként. Ezért (is) feltétele a címtárszolgáltatás működésének a TCP/IP megléte. LDAP-ból is több verzió látott napvilágot a Windows 2000 a 2.-at és 3.-at használja. Nem kifejezetten az Active Directory címtárához készült protokollról van szó, hanem címtárprotokollról, amely más rendszerek címtárszolgáltatásaihoz is biztosíthatja a hozzáférést. Így aki egy másik rendszeren már megtanulta a használatát, az az Active Directory-nál is ugyanúgy fogja tudni alkalmazni. Nincs szó semmilyen bonyolult dologról, a felhasználó felé megjelenő felület a lehető legjobban le van egyszerűsítve.
A protokoll használatának szintaxisa hasonlít egy normál Internetes http eléréshez csak minden esetben meg kell adni a névtagokhoz tartozó típust. Mit jelent ez? Például az "Informatika" szervezeti egységre az "OU=Informatika" módon lehet hivatkozni. OU = Organization Unit = Szervezeti egység. Ugyanígy az "Animare.hu" tartomány a "DC=hu, DC=Animare" módon érhető el. Ahol DC = Domain Context = Tartományi környezet. Az alábbi típus meghatározásokat lehet használni:
  • CN = Common Name = Közönséges név. Kötelező elem minden lekérdezésnél, az erőforrás objektumokra és típus nélküli tárolókra lehet vele hivatkozni.
  • DC = Domain Context = Tartományi környezet. A tartomány nevét írja le.
  • OU = Organization Unit = Szervezeti egység. Ha az elérni kívánt objektum a tartományon belül valamely szervezeti egységben található, akkor az előző DC parancs mellett az OU-t is meg kell adni.
Ez alapján példa egy szabályos LDAP kérésre:
LDAP://CN=Guest,OU=Users,DC=microsoft,DC=com
A "microsoft.com" tartomány "Users" szervezeti egységének "Guest" felhasználói fiókját érhetjük el ily módon.
Térjünk át a Visual Basic szkriptekben történő megvalósításra:
Első lépésben definiálni kell egy sztringet, amely magában foglalja az LDAP lekérdezést
LDAP = "LDAP://CN=Computers,DC=microsoft,DC=com"
Ez a lekérdezés a "Microsoft.com" tartomány "Computers" tárolójának teljes tartalmát éri el. A sztring tulajdonképpen egy objektumot definiál, több példánnyal (gyermekobjektummal). A példányok adják a tároló tartalmát, amelyek példánknál maradva alapesetben felhasználók és felhasználói csoportok. Egy FOR ciklussal haladhatunk végig egyesével a példányokon. A ciklusmagban az adott példányon lehet műveleteket végrehajtani.
For Each child in objConf
  ...
Next
Nézzünk meg egy konkrét feladatot. Készítsünk egy listát egy tartomány "Users" tárolójában található összes felhasználóról, de csak azokról, akik rendelkeznek E-mail címmel. A felhasználói fiókok alapértelmezésben a "Users" tárolóban találhatók meg. Példaként ismét a microsoft.com tartományt vettük, de természetesen ez bármi másra megváltoztatható. Definiáljuk az objektumelérést megvalósító LDAP parancsot.
LDAP = "LDAP://CN=Users,DC=microsoft,DC=com"
Definiáljunk egy "Text" nevű változót és "nullázzuk" le. Hozzunk létre egy új objektumot az LDAP eredményéből. Majd az előbbi FOR ciklussal haladjunk végig az összes példányán (ez a "Users" tároló összes objektumát jelenti). Ha az aktuális objektum "mail" tulajdonsága nem üres sztring, tehát rendelkezik E-mail címmel, akkor adjuk a "Text" változóhoz a nevét, címét és egy újsor karaktert.
Text=""
Set objConf = GetObject(LDAP)
For Each child in objConf
 if child.mail <> "" then
  Text=Text+child.Name & "  E-Mail: " & child.mail & chr(13)
 end if
Next
Írassuk ki az eredményt a képernyőre. Végül töröljük az LDAP szülőobjektumot (nem kötelező, mert a szkript lefutása után a Windows egy idő után felszabadítja a memóriát).
Wscript.Echo Text
Set objConf = Nothing
Megjegyzésként annyit fűznénk hozzá, hogy azt ellenőriztük, hogy a "Users" tároló melyik objektuma rendelkezik E.mail címmel, azt nem, hogy ezek közül melyik felhasználó, kapcsolattartó vagy felhasználói csoport.
Másik példa:
A fenti módszerrel lekérhető a tartományban szereplő gépek névsora is. Nem kell mást tenni, mint a "Computers" tároló tartalmát listázni.
LDAP = "LDAP://CN=Computers,DC=so,DC=zp"
Text=""
Set objConf = GetObject(LDAP)
For Each child in objConf
  Text=Text+child.Name & chr(13)
Next
Wscript.Echo Text
Set objConf = Nothing
Megjegyzés: a szkript futtatásakor az Active Directory elérése a futtató felhasználó adataival történik, ezért megfelelő jogosultsági szinttel kell rendelkezni (pl.: rendszergazda csoport tagok).
Hasonló szkriptek megírásához nélkülözhetetlen az egyes objektumok tulajdonságainak ismerete (child.name, child.mail). A következő részben bemutatunk egy segédprogramot, amellyel hozzájuthatunk ezekhez az információkhoz.

Könyv
Ez a cikk megtalálható ebben a könyvben: Windows Software Offline 2002 évkönyv 149. oldal

Felhasználási feltételek
A Software Online szoftverfejlesztői magazin mindegyik cikke, minden megjelent képe, és egyéb publikált anyaga szerzői jog védelme alatt áll! Bármilyen formában történő másodlagos terjesztésük, közzétételük vagy felhasználásuk kizárólag a kiadó előzetes írásbeli engedélyével történhet!

Copyright © 1999-2012 Animare Software Kft. Minden jog fenntartva!
| Készült: Animare Stúdió | Adatvédelem | Kapcsolat |