
Cikkünkhöz mellékeltük az alábbiakban szereplő szkripteket:
"CreateOU.vbs" - Létrehoz egy új szervezeti egységet a zp.local tartományon belül "WSO" néven. Majd ezen belül egy újabb szervezeti egységet "Alegység" néven.
"MoveUsers.vbs" - A "Users" tárolóban lévő "User1" és "User2" felhasználói fiókokat átmozgatja az előző szkript által létrehozott szervezeti egységekbe. A két felhasználói fióknak létezni kell.
"NewUser.vbs" - Egy új felhasználói fiókot a "WSO" szervezeti egységen belül.
Mindhárom szkript a zp.local tartomány meglétét feltételezi. Felhasználásuk előtt módosítani kell szkripten belül a hivatkozásokat egy valós tartománynevet megadva.
Általában nem jellemző az ilyen és hasonló szkriptek közvetlenül a tartományvezérlőn történő futtatása. Ha egy másik gépen futtatjuk őket, a tényleges műveletek valójában az egyik tartományvezérlőn hajtódnak végre. Ennek viszont feltétele, hogy a felhasználó megfelelő jogosultsággal rendelkezzen, mind helyileg, mind a tartományvezérlőn. A megfelelő jogosultság jelen esetben a rendszergazdai jogokat jelenti. Esetleg lehet delegálás útján felhasználóknak jogkört adni a szervezeti egységek és felhasználók létrehozásához, módosításához.
Cikksorozatunkban eddig főként a "WinNT" interfészen keresztül hoztunk létre objektumkapcsolatokat. Most az "LDAP"-ot fogjuk használni, amely kifejezetten az LDAP protokollt ismerő címtárszolgáltatások számára készült. Az Active Directory ismeri az LDAP több verzióját is, úgyhogy szkriptjeinkben minden további nélkül használhatjuk.
Szervezeti egységek létrehozása
Vágjunk a közepébe és rögtön egy példa szkripten keresztül nézzük meg a létrehozás módját:
Elsőként csatlakozzunk a tartomány gyökérpontjához (példánkban: zp.local).
Set dom = GetObject("LDAP://dc=zp, dc=local")
Ezután létrehozunk egy új objektumot. Típusa: "organizationalUnit" - szervezeti egység. Neve: "WSO". A létrehozás helyét a szkript előző sora adja meg.
Set OU = dom.Create("organizationalUnit", "OU=WSO")
Beállítjuk néhány tulajdonságát: a leírás mező tartalmát "WSO Próbá"-ra. Ha rendelkezik a hálózat Exchange 2000 szerverrel, akkor automatikusan létrejön egy új postafiók is. Adjuk meg a szervezeti egységhez tartozó webcímet ("wwwHomePage" tulajdonság). Végül küldjük el az adatokat a tartományvezérlőnek (SetInfo).
OU.Put "description", "WSO Próba"
OU.Put "wwwHomePage", "http://www.softwareonline.hu"
OU.SetInfo
Ezzel gyakorlatilag létrejött az új szervezeti egység a tartomány gyökerében. Hogy tudunk ezen belül egy újabbat létrehozni? Változtassuk meg a gyökérpontot!
Set dom = GetObject("LDAP://ou=WSO, dc=zp, dc=local")
Majd ugyanúgy kell eljárnunk, mint az előbb.
Set OU = dom.Create("organizationalUnit", "OU=alegység")
OU.Put "description", "WSO Próba - alegység"
OU.Put "wwwHomePage", "http://www.softwareonline.hu"
OU.SetInfo
Utolsó lépésként megjelenítünk egy feliratot a képernyőn, hogy lássuk mikor ért véget a szkript futása.
Wscript.Echo "A szervezeti egység létrehozva."
Meglévő felhasználói fiókok áthelyezése szervezeti egységekbe
Határozzuk meg, hogy melyik szervezeti egységbe akarjuk áthelyezni a felhasználói fiókot.
Set dom = GetObject("LDAP://ou=WSO, dc=zp, dc=local")
Egy eddig nem használt metódus következik. Neve: "MoveHere". Paraméterként át kell adni a mozgatandó objektum nevét. Ha a forrás és a célnév megegyezik - tehát nem akarjuk átnevezni, akkor a második paraméterként a "vbNullString" értéket kell beírni. Ha az átnevezés mellett döntünk, akkor "vbNullString" helyett adjuk meg az objektum új nevét. Mozgassuk át a címtár "Users" tárolójában lévő "User1" fiókot a "WSO" szervezeti egységbe. Mielőtt futtatnánk a szkriptet gondoskodjunk róla, hogy a fiók létezzen, különben hibajelzést kapunk.
Set usr = dom.MoveHere("LDAP://CN=user1,CN=Users,DC=zp,DC=local", vbNullString)
Ezután mozgassuk át szintén a "Users" tárolóból a "User2" fiókot is, de ezúttal a "WSO"-n belüli "Alegység" nevű szervezeti egységbe. Figyeljük meg az LDAP hivatkozásban a megadási sorrendet.
Set dom = GetObject("LDAP://ou=alegység, ou=WSO, dc=zp, dc=local")
Set usr = dom.MoveHere("LDAP://CN=user2,CN=Users,DC=zp,DC=local", vbNullString)
Zárásként tájékoztassuk a szkript használóját, hogy megtörtént az áthelyezés.
Wscript.Echo "A felhasználók áthelyezve."
Új felhasználói fiókok létrehozása szervezeti egységeken belül
Felhasználói fiókot már hoztunk létre cikksorozatunk korábbi részeiben, ezért nem részletezzük a megvalósítás mikéntjét, csak két technikai érdekességre hívjuk fel a figyelmet.
Korábban azt mondtuk: "Hozzunk létre egy új fiókot ebben és ebben a tartományban". A fiók létrejött, méghozzá a tartomány "Users" tárolójában. De mi van, ha mi nem itt akarjuk elhelyezni? Megtehetjük, hogy a fenti módszerrel átmozgatjuk, de sokkal ésszerűbb, ha konkrétan megmondjuk a létrehozás helyét. Példánkban a "WSO" szervezeti egységet.
Set OU = GetObject("LDAP://OU=WSO,DC=zp,DC=local")
Set usr = OU.Create("user", "CN=Próba felhasználó")
usr.Put "samAccountName", "proba"
usr.Put "userPrincipalName", "proba@zp.local"
usr.Put "title" "Ügyvezető igazgató"
usr.SetInfo
Állítsunk be további tulajdonságokat is. Joggal merülhet fel a kérdés, hogy miért nem tettük meg az előző "SetInfo" metódus előtt? Azért mert egyes tulajdonságok módosításához létezni kell az objektumnak. A fenti "SetInfo" létrehozza, míg az alábbi beállítja a további tulajdonságokat. Próbáljuk meg elhagyni az első "SetInfo"-t és hibajelzést kapunk, mert még nem létezik az objektum a jelszó beállításánál.
usr.SetPassword "abc123"
usr.AccountDisabled = False
usr.SetInfo
Wscript.echo "A felhasználó létrehozva."