
Cikkünkhöz mellékeltük az alábbiakban szereplő szkriptet "UserCount.vbs" néven. Futtatásakor kiírja a csatlakoztatott címtár "Users" tárolójában lévő felhasználói fiókok számát. A szkript használatához az első sorában lévő "Microsoft.com" tartománynevet módosítani kell a tényleges névre.
Hiába írunk tökéletes programokat az Active Directory elérésére, objektumainak lekérdezésére vagy egyes tulajdonságok beállítására, ha egy apró hálózati hiányosság miatt nem jön létre a kapcsolat a program és a címtár között. Lehet, hogy hiba nélkül bejelentkeztünk a tartományba, látjuk az erőforrásokat, de az a fránya program mégis hibaüzenettel áll le. Az alábbiakban összeszedjük a sikeres csatlakozás feltételeit:
1. Jelentkezzünk be a tartományba.
Amennyiben a program nem a tartományvezérlőn, hanem egy kliens gépen fut, szükséges bejelentkeztetni a tartományba. Tallózzunk el a következő helyre:
Windows XP alatt:
Vezérlőpult > (Hálózati és Internetes kapcsolatok) > Hálózati kapcsolatok > Speciális > Hálózati azonosítás > Módosítás (Control Panel > (Network and Internet Connections) > Network Connections > Advanced > Network Identification > Change)
Windows 2000 alatt:
Beállítások > Hálózati és telefonos kapcsolatok > Speciális > Hálózati azonosítás > Tulajdonságok (Settings > Network and Dial-up Connections > Advanced > Network Identification > Properties).
A "Tagság" ("Member of") csoportban lehet váltani a tartományi és a munkacsoportbeli tagság között. Győződjünk meg róla, hogy itt a tartomány van beállítva.
2. Windows 2000 Professional vagy későbbi operációs rendszer fusson az ügyfélgépen. Ennél korábbi rendszerek nem tudnak teljes értékű tagjai lenni az Active Directory-nak, nem tudják kezelni a csoportházirendet, ezért csak korlátozott lehetőségekkel dolgozhatunk. Ez a legtöbb esetben nem elegendő a címtárkezelő programok futtatásához.
3. TCP/IP protokoll megléte. Az előző pontokhoz kapcsolódik. Az Active Directory alapesetben igényli a TCP/IP protokollt. A helyi hálózati kapcsolat (vagy éppen a betárcsázásos kapcsolat, ha azzal érjük el a címtárat) tulajdonságlapján nyissuk meg a TCP/IP beállításokat. Két lehetőség áll fenn: vagy automatikus a címkiosztás (DHCP-n keresztül) vagy fix címekkel dolgozunk. Utóbbi esetben kicsit egyszerűbb a helyzet. Szükséges beállítani az IP címet és az alhálózati maszkot és itt jön egy rendkívül fontos dolog, állítsuk be az alapértelmezett átjárót is!!! Hogy mire? Arra az átjáró IP címre, amelyik elvisz a tartományvezérlőhöz. Ha nincs ilyen, akkor magának a tartományvezérlőnek a címét adjuk meg! E nélkül hiába minden. DHCP használata esetén ugyanezeket a beállításokat kell a kiszolgálóval átadatni.
4. Megfelelő jogosultsági szint megléte. A Windows 2000 és XP rendszerek minden objektumhoz biztonsági hozzáférési listával rendelkeznek, ahol elő van írva, hogy ki milyen műveleteket hajthat végre. Amikor egy program próbál elérni egy objektumot, akkor a programot indító felhasználó neve és jelszava adódik át, amennyiben az illető nem jogosult, akkor programokon keresztül sem lesz jogosult. Az Active Directory a le nem tiltott, hitelesített felhasználók számára engedélyezi a címtárhoz való hozzáférést, de csak korlátozottan. Lehet, hogy korlátokat nem is vesszük azonnal észre. Ha sikertelen egy program futtatása felhasználói fiókkal bejelentkezve, akkor próbáljuk meg rendszergazdaként is. Viszont mindenkit óva intünk attól, hogy minden programot rendszergazdai jogokkal futtasson. Arra kell törekedni - persze ez függ a program által megvalósítandó feladattól is -, hogy lehetőleg egy "sima" felhasználó is tudja működtetni.
5. Probléma lehet még a névfeloldás hiánya. Beállított és működő DNS szerverre vagy szélsőséges esetben NetBIOS névfeloldásra szükség van. Ha nem tudja meg a kliens a tartományvezérlő gépnevéből az IP címét, hibát fog jelezni. Tesztelésképpen parancssorba adjuk ki a következő utasítást:
Ahol a "gépnév" a tartományvezérlő neve a "tartománynév" pedig a tartomány teljesen minősített neve (pl.: SoftwareOnline.hu). Amennyiben a parancsra érkezik válasz a névfeloldás ezen része sikeres, de időtúllépés esetén ellenőrizni kell a DNS kiszolgálót vagy a kliens TCP/IP beállításai között, hogy egyáltalán van-e beállítva DNS kiszolgáló.
A fenti feltételek képezik az Active Directory elérésének alapját. Ilyen természetes dolgokat nem is említettük, hogy kiépített hálózat megléte, megfelelően csatlakoztatott hálózati kábel, modemes kapcsolatnál telepített, bekapcsolt modem, stb.
Készítsünk egy szkriptet a címtár elérésére. Valójában nem azt ellenőrizzük, hogy a címtár ténylegesen elérhető-e, hanem konkrét objektumoknak a listáját próbáljuk meg lekérni. Az objektumok legyenek a "Users" tárolóban található felhasználói fiókok. Azért ezek, mert alapesetben létezniük kell. Számoljuk meg, hogy hány darab van belőlük.
A szkript nem fog lefutni, ha a címtár nem elérhető. Ekkor a 8007054B kódú hibaüzenetet kapjuk vissza.
Első lépésben kapcsolódjunk a tartományhoz az LDAP protokoll segítségével. A "Microsoft.com" tartománynevet módosítani kell a helyi névre.
LDAP = "LDAP://CN=Users,DC=Microsoft,DC=com"
Definiáljunk egy új változót "UsersCount" néven és nullázzuk le az értéket, majd egy FOR ciklus segítségével haladjunk végig az LDAP által visszaadott objektumokon. Ellenőrizzük le, hogy felhasználói fiókról van-e szó (child.class = "user"), ha igen, akkor növeljük a "UserCount" változó értékét eggyel.
UserCount=0
Set objConf = GetObject(LDAP)
For Each child in objConf
if child.class = "user" then
UserCount=UserCount+1
end if
Next
Ha nincs egyetlen felhasználói fiók sem (de kell lenni), akkor valamilyen hiba folytán nem volt sikeres az elérés.
if UserCount=0 then
Wscript.Echo "Nem talhatók felhasználói fiókok a 'Users' tárolóban."
end if
Ha viszont találtunk akkor írassuk ki, hogy hány darab van belőle, majd töröljük az LDAP objektumot.
if UserCount>0 then
Wscript.Echo UserCount & " db felhasználói fiókok található a 'Users' tárolóban."
end if
Set objConf = Nothing
Az eredményes futtatás feltétele, hogy valóban legyen a "Users" tárolóban legalább egy felhasználói fiók.