
Mellékelten megtalálhatók az alábbi szkriptek:
"GetComputerProp.vbs" - Megjeleníti a megadott munkacsoport és gépnév által definiált objektum alapvető tulajdonságait.
"GetUserFullName.vbs" - A szkript "Computer" változója által megadott munkacsoportban vagy tartományban megjeleníti a "Username" változóban megadott felhasználó teljes nevét.
"ListAllComputers.vbs" - Készít egy listát a "Domain" változóban megadott munkacsoport vagy tartomány pillanatnyilag bekapcsolva lévő gépeiről.
A szkriptek futtatása előtt az említett változók tartalmát a helyi adottságoknak megfelelően módosítani kell. Amelyik szkripthez mellékeltünk ugyanolyan néven egy batch fájlt, ott javasoljuk azzal indítani a futtatást.
Objektumok alapvető tulajdonságainak lekérdezése
Az előző részben láthattuk, hogy melyik az a hat tulajdonság, mely rendelkezésünkre áll bármilyen objektumról is legyen szó. Első szkriptünkben kapcsolatot teremtünk egy adott munkacsoport gépével és megjelenítjük a képernyőn az alapvető tulajdonságainak értékét.
Hozzuk létre a kapcsolatot a WinNT ellátón keresztül a "workgroup" nevű munkacsoport "dorothy" nevű gépével. A gép a "computer" osztályba tartozik, mint minden számítógép. A tulajdonságokra "objektumnév.tulajdonság" formában lehet hivatkozni (például: myObj.Name).
Set myObj = GetObject("WinNT://workgroup/dorothy,computer")
WScript.Echo "Gépnév: " & myObj.Name
WScript.Echo "Osztály: " & myObj.Class
WScript.Echo "GUID: " & myObj.GUID
WScript.Echo "ADsPath: " & myObj.ADsPath
WScript.Echo "Szülő: " & myObj.Parent
WScript.Echo "Séma elérési útja: " & myObj.Schema
Futtassuk a fenti szkriptet parancssorból:
Azért parancssorból, mert a grafikus felületen minden Wscript.Echo utasítás külön ablakban jelenítené meg az eredményt. Könnyítésként készítettünk egy batch fájlt, ami az Intézőből is futtathatóvá teszi a szkriptet és nem kell parancssori utasítások kiadásával bajlódni (a fájl cikkmellékletünkben található).
Egyéb objektum tulajdonságok lekérdezése
Egy objektum a legritkább esetben áll csak ebből a hat tulajdonságból. Általában ennél jóval többről van szó. Az Active Directory-ban nem ritka a több tíz vagy több száz tulajdonság sem. Előállhatnak öröklődés útján, lehetnek egyediek és lehetnek felhasználók vagy programok által definiáltak is. Utóbbira példa az Exchange 2000 Server feltelepítése után végbemenő - a teljes rendszert érintő - változás. Új objektumok jelennek meg a címtárban és a meglévők további tulajdonságokkal egészülnek ki a program igényeinek megfelelően.
Szemléltessük mindezt egy példán keresztül:
Minden felhasználói fiókhoz tartozik egy teljes név. Megtekinthetjük és szerkeszthetjük nem tartományi tag gépeken a következő útvonalon: kattintsunk a "Sajátgép" ("My Computer") ikonra a jobboldali egérgombbal és lépjünk a "Kezelés" ("Manage") menüre. Megnyílik a "Számítógép-kezelés" ("Computer Management") MMC konzol. Ugyanide eljuthatunk a vezérlőpult segítségével is. A farendszerben keressük meg a "Helyi felhasználók és csoportok" ("Local Users and Groups") tárolót és lépjünk a "Felhasználók" ("Users") mappába. A konzol jobboldalán megjelennek a felhasználói fiókok. Válasszuk ki az egyiket és nézzük meg a tulajdonságait. Mindjárt az első oldalon láthatjuk a kérdéses "Teljes név" ("Full name") mezőt.
Active Directory tartományokban egy tartományvezérlő Felügyeleti eszközök > Active Directory - felhasználók és számítógépek (Administrative Tools > Active Directory Users and Computers) konzoljával lehet a fiókok tulajdonságait megjeleníteni.
Kérjük le és írassuk ki a képernyőre ezt a tulajdonságot az ADSI használatával.
Tároljuk el egy változóba a keresendő felhasználó bejelentkezési nevét.
Username = "rendszergazda"
És a számítógép nevet, mely a fiókot tárolja. Tartománynál az egyik tartományvezérlő nevét.
Kapcsolódjunk a megadott gép, megadott felhasználói fiókjához.
Set myObj = GetObject("WinNT://" & Computer & "/" & UserName & ",user")
Írassuk ki a képernyőre a felhasználó teljes nevét.
WScript.Echo "A felhasználó teljes neve: " & myObj.FullName
Szűrések alkalmazása
Nem lehet minden esetben ennyire pontosan hivatkozni egy objektumra, mint tettük a fentiekben. Nézzük meg ismét egy példán keresztül, hogy mire gondolunk:
Célunk, hogy készítsünk egy listát a munkacsoport azon gépeiről, melyek a szkript futtatásakor be vannak kapcsolva.
Elsőként definiáljunk egy változót, melyben eltároljuk a munkacsoport (de lehet tartomány is) nevét.
A kapott információt a képernyőn fogjuk megjeleníteni. Készítsünk egy fejlécet a várható listához.
wscript.Echo "Pillanatnyilag elérhető gépek a hálózatban:"
wscript.Echo "-------------------------------------------"
Készítsünk egy újabb változót, mely segítségével megszámolhatjuk, hogy pillanatnyilag hány gép elérhető.
Kapcsolódjunk a "Domain" változóban megadott munkacsoporthoz vagy tartományhoz. Semmi közelebbit nem tudunk megadni. Nem tudjuk a gépek nevét, csak azt, hogy számítógépek lévén a "computer" osztályba tartoznak. Itt rögtön szembesülünk egy problémával, történetesen az "objektum,osztály" szintaxis alkalmazhatatlanságával, ugyanis hiányzik az objektum (pontosabban ismeretlen). Ezért a következő formulát vagyunk kénytelenek használni:
Set OnlyDomain = GetObject("WinNT://"+Domain)
A szkript futásának ezen szakaszában az "OnlyDomain" változó a munkacsoportban elérhető összes objektumot jelenti, legyen az számítógép, felhasználói fiók, nyomtató vagy bármi más. Megtehetnénk, hogy egy ciklussal kiválogatjuk a "computer" osztályba tartozókat, de az ADSI ennél egyszerűbb. Alkalmazzuk a "Filter" nevű szűrőmetódust és dobjunk el minden objektumot, mely nem a "computer" osztályba tartozik.
OnlyDomain.Filter=Array("computer")
Most már jöhet egy ciklus. Szépen végignézetjük vele a megmaradt objektumokat és kiíratjuk a képernyőre a "Name" tulajdonságuk tartalmát. Közben ne felejtsük el egyesével növelni a sorszámot sem.
For Each Computer in OnlyDomain
Wscript.Echo sorszam & " " & Computer.Name
sorszam=sorszam+1
Next
Megjegyzés:
Egyidejűleg több szűrési feltétel megadás is lehetséges, például:
OnlyDomain.Filter=Array("computer", "user")
A szűrést megszüntetni egy üres sztring megadásával lehet:
OnlyDomain.Filter=Array("")
Következő részben a tulajdonságok szerkesztésével és az alkalmazható metódusokkal foglalkozunk.