Windows - ADSI szkriptek készítése

ADSI 9. rész

Elérkeztünk cikksorozatunk záró részéhez. Ebben a részben az eddig mellőzött Novell Netware felhasználók számára próbálunk segítséget nyújtani. Megnézzük, hogy lehet az NDS interfészen keresztül a Novell címtárrendszerében objektumokat létrehozni, tulajdonságokat változtatni, keresni ADSI (Active Directory Service Interface) szkriptekkel - Windows-ból. Az alábbiak mintegy összefoglalója az eddig elhangzottaknak Novell címtárra átültetve. Részletesebb információért javasoljuk cikksorozatunk eddigi részeinek áttekintését.
Előkészületek
A Novell címtárrendszeréhez nem lehet közvetlenül csatlakoztatni ADSI-n keresztül a Windows munkaállomásokat, ezért szükségünk van némi előkészületre. Ha a Windows-os gép már működik Novell hálózatban, akkor valószínűleg az alábbi lépéseket már végrehajtottuk vagy a NetWare kliens telepítő hajtotta végre.
Nyissuk meg a Vezérlőpulton (Control Panel) a helyi hálózati kapcsolat ikonját. Kattintsunk rá a jobboldali egérgombbal és válasszuk a "Tulajdonságok" ("Properties") menüt. Nyomjuk le a "Telepítés" ("Install") gombot. Válasszuk az "Ügyfél" ("Client") hozzáadását és telepítsük fel a "Netware ügyfélszolgáltatás" ("Client Service for NetWare") nevű ügyfélszolgáltatást (Windows XP).
Objektumkapcsolat kialakítása
A Novell Netware címtárrendszeréhez az NDS szolgáltató segítségével lehet kapcsolatot kiépíteni. Meg kell adnunk a csatlakozáshoz szükséges felhasználói nevet és jelszót, továbbá a kiszolgáló nevét.
servername = "ntmarst2"
userName = "supervisor.ntmarst2"
password = "abc123" 
Magát a kapcsolatot az "OpenDSObject" metódussal teremtjük meg. Paraméterként az elérendő objektum címtárbeli útvonalát adjuk át. Jelen esetben a gyökérpontra jutunk.
Set dso = GetObject("NDS:")
Set cont = dso.OpenDSObject("NDS://" & serverName,userName,password,0)
Új felhasználó létrehozása
Létrehozzuk az "ntmarst2" kiszolgálóval a kapcsolatot az előbbieknek megfelelően és csatlakozunk az NDS címtárhoz.
Path = "O=NTMARST2"
ADsPath = "NDS://" & serverName & "/" & Path
Set cont = dso.OpenDSObject(ADsPath, userName, password, 0)
Ezután az Active Directory-nál megismert módon a "Create" metódust használva, létrehozunk egy új "User" típusú objektumot, "Próba" néven. Beállítjuk a címtárbeli névnek is a "Próbá"-t és a "SetInfo" metódussal elküldjük az adatokat a Novell kiszolgálónak.
Set usr = cont.Create("user", "Próba")
usr.Put "cn", "Próba"
usr.Put "Surname", "WSO"
usr.SetInfo
Objektum adatainak módosítása
Immár nem csak magához a kiszolgálóhoz csatlakozunk, hanem közvetlenül az objektumhoz, ami az előbb létrehozott felhasználói fiók (CN=Próba).
Path = "O=NTMARST2/CN=Próba"
ADsPath = "NDS://" & serverName & "/" & Path
Set usr = dso.OpenDSObject(ADsPath, userName, password, 0)
Majd egyszerűen átírjuk a megfelelő tulajdonságot a "Put" metódussal. Paraméterként először a módosítandó objektum tulajdonságot kell megadni, utána pedig az új értéket.
usr.Put "SurName", "Teszt"
usr.SetInfo
A fenti példában a felhasználói objektum "Surname" (vezetéknév) tartalmát változtattuk meg "WSO"-ról, "Teszt"-re.
Keresés a címtárban
Cikksorozatunk előző részében részleteztük az ADO szolgáltatás igénybevételével végzett keresést. Ami az Active Directory-nál érvényes az majdnem teljes egészében átvihető a Novell címtárra is. Különbség csupán magának a tartománynak az elérésénél van, de ott is csak szintaktikailag. A hasonlóság köszönhető az ADSI és az ActiveX Windows-beli megvalósításának.
Hozzuk tehát létre a már ismert ADO kapcsolatot és nyissuk meg (open metódus). Definiáljuk a Novell címtár elérésének pontját. Jelen esetben a gyökérpontnál kezdjük a keresést és innen haladunk az alsóbb szintek felé.
ADsPath = "NDS://" & serverName
Set con = CreateObject("ADODB.Connection")
con.Provider = "ADsDSOObject"
con.Properties("User ID") = userName
con.Properties("Password") = password
con.Open "ADSI"
Set com = CreateObject("ADODB.Command")
Set com.ActiveConnection = con
Határozzunk meg egy szabványos SQL lekérdezést átültetve a Novell címtárra.
com.CommandText = "SELECT ADsPath, 'Object Class' FROM '" & ADsPath & "' WHERE Surname='Teszt'"
Set rs = com.Execute
A visszakapott eredményt (rs = recordSet) megjelenítjük a képernyőn egy ciklussal feldolgozva egyesével az elemeket.
While Not (rs.EOF)
  Wscript.echo rs.Fields("ADsPath")
   rs.MoveNext
Wend

ADSI cikksorozat