
Cikkünkhöz mellékeltük az alábbi szkriptet "FSMO.vbs" néven. Futtassuk az Intézőben és megjeleníti a képernyőn az FSMO szolgáltatásokat kezelő tartományvezérlők neveit. A futtatáshoz nincs szükség előzetes konfigurálásra, a tartománynév meghatározása automatikusan történik.
Az Active Directory több flexibilis szolgáltatást tartalmaz, melyek kezdetben egyetlen tartományvezérlőn találhatók. Terhelés megosztási vagy egyéb okokból módunkban áll áttelepíteni őket másik tartományvezérlőkre. Az első tartományvezérlő telepítésekor az összes műveleti központ telepítésre kerül és mindegyik értelemszerűen a meglévő egyetlen tartományvezérlőre. Később újabb tartományvezérlőket telepíthetünk és ezek replikáció útján tartják a kapcsolatot egymással, elosztva a terhelést és növelve a rendelkezésre állást.
FSMO szerepkörök a következő öt szolgáltatást jelentik:
- Sémaközpont (Schema Master)
- Tartomány nyilvántartó központ (Domain Naming Master)
- RID központ (RID Master)
- PDC központ (PDC Master)
- Infrastruktúra központ (Infrastructure Master)
Mielőtt kikapcsolnánk egy szervert, tudnunk kell, hogy melyik szolgáltatás fut rajta. Meg is fordíthatjuk a dolgot: melyik szolgáltatás, melyik szerveren fut? Utóbbira példa a következő szkript:
Az FSMO nevű változóban fogjuk eltárolni a kapott eredményt és a szkript végén íratjuk ki a tartalmát. Elsőként adjunk meg egy fejléc sort, utána egy üres sort.
FSMO = "FSMO szerepkörök a tartományban:" + chr(10) + chr(13) + chr(10) + chr(13)
A szerepkörök lekérdezését az ADSI szolgáltatás segítségével hajtjuk végre. A címtárhoz az LDAP protokollal férünk hozzá. Hozzunk létre egy új objektumot a tartomány gyökérpontjából (rootDSE).
Set objRootDSE = GetObject("LDAP://rootDSE")
Most már meghatározhatjuk a sémaközpontot kezelő gépet. Kérdezzük le a gyökérpont "schemaNamingContext" tulajdonságát. Ezzel még nem vagyunk kész, mert most még csak a séma konténerben vagyunk.
Set objSchema = GetObject("LDAP://" & objRootDSE.Get("schemaNamingContext"))
Most következik a sémát tároló gép objektumának lekérése.
strSchemaMaster = objSchema.Get("fSMORoleOwner")
Az objektum szülőkonténere (parent) tárolja a gép adatait.
Set objNtds = GetObject("LDAP://" & strSchemaMaster)
Set objComputer = GetObject(objNtds.Parent)
Melyek közül a "Name" tulajdonság jelenti a gép nevét.
FSMO = FSMO & "Sémaközpont: " & objComputer.Name + chr(10) + chr(13)
Ne felejtsük el felszabadítani az objektumváltozók által lefoglalt memóriát.
Set objNtds = Nothing
Set objComputer = Nothing
A tartomány nyilvántartó központ meghatározásánál gyakorlatilag ugyanígy kell eljárni, csak ezúttal a "configurationNamingContext" konténerben kell keresni.
Set objPartitions = GetObject("LDAP://CN=Partitions," & objRootDSE.Get("configurationNamingContext"))
strDomainNamingMaster = objPartitions.Get("fSMORoleOwner")
Set objNtds = GetObject("LDAP://" & strDomainNamingMaster)
Set objComputer = GetObject(objNtds.Parent)
FSMO = FSMO & "Tartomány nyilvántartó központ: " & objComputer.Name + chr(10) + chr(13)
Set objNtds = Nothing
Set objComputer = Nothing
A PDC emulátor, RID központ és infrastruktúra központ egyaránt a "defaultNamingContext" konténerben található. A lekérdezés menete ugyanaz, mint az előbb.
Set objDomain = GetObject("LDAP://" & objRootDSE.Get("defaultNamingContext"))
strPdcEmulator = objDomain.Get("fSMORoleOwner")
Set objNtds = GetObject("LDAP://" & strPdcEmulator)
Set objComputer = GetObject(objNtds.Parent)
FSMO = FSMO & "PDC Emulátor: " & objComputer.Name + chr(10) + chr(13)
Set objNtds = Nothing
Set objComputer = Nothing
Set objRidManager = GetObject("LDAP://CN=RID Manager$,CN=System," & objRootDSE.Get("defaultNamingContext"))
strRidMaster = objRidManager.Get("fSMORoleOwner")
Set objNtds = GetObject("LDAP://" & strRidMaster)
Set objComputer = GetObject(objNtds.Parent)
FSMO = FSMO & "RID központ: " & objComputer.Name + chr(10) + chr(13)
Set objNtds = Nothing
Set objComputer = Nothing
Set objInfrastructure = GetObject("LDAP://CN=Infrastructure," & objRootDSE.Get("defaultNamingContext"))
strInfrastructureMaster = objInfrastructure.Get("fSMORoleOwner")
Set objNtds = GetObject("LDAP://" & strInfrastructureMaster)
Set objComputer = GetObject(objNtds.Parent)
FSMO = FSMO & "Infrastuktúra központ: " & objComputer.Name + chr(10) + chr(13)
Utolsó lépésként kiíratjuk a képernyőre a kapott eredményt, tehát az FSMO változó tartalmát.
A kapcsolódó cikkekben további információk találhatók az FSMO-ról. Itt található az is, hogy lehet a szolgáltatásokat egyesével áthelyezni másik tartományvezérlőkre.