Экзамены Microsoft

Microsoft 2003 Server
Windows 2000

Сторонний софт

Citrix MetaFrame

Подписка на новости

Новости раздела Инструкции
feed image

Опрос

Нужна ли России своя операционная система?





      Яндекс цитирования
      Rambler's Top100
     
      Находится в каталоге Апорт





Печать E-mail

Как с командной строки проверить роли мастеров операций Flexible Single-Master Operation (FSMO) для локального сервера?

Джон Севилл
16.06.2004

Вопрос:
Как с командной строки проверить роли мастеров операций Flexible Single-Master Operation (FSMO) для локального сервера?

Ответ:
Я написал небольшой сценарий на VBScript (localsrvroles.vbs), который выводит на экран роли FSMO, выполняемые текущим сервером. Сценарий основан на оригинальном сценарии Microsoft, формирующем список всех ролей в лесу; я внес изменения в сценарий Microsoft, сравнивая роли из списка и роли локального сервера и выводя на экран роли только в случае совпадения данных. Localsrvroles.vbs представлен в Листинге 1.

Для выполнения сценария нужно ввести с командной строки

cscript //nologo localsrvroles.vbs

Пример вывода сценария:

PDC
RIS
Infrastructure
Schema
Domain Naming

Обратите внимание, что сценарий не выводит ничего кроме ролей, которые выполняет данный компьютер (в приведенном примере сервер выполняет 5 ролей FSMO).

Джон Севилл - Консультант, автор книги «The Windows NT and Windows 2000 Answer Book» (Addison Wesley), имеет сертификат MCSE. С ним можно связаться по адресу: Этот e-mail защищен от спам-ботов. Для его просмотра в вашем браузере должна быть включена поддержка Java-script .


Листинг 1

********************
Option Explicit
Dim WSHNetwork, objArgs, ADOconnObj, bstrADOQueryString, RootDom,
RSObj
Dim FSMOobj,CompNTDS, Computer, Path, HelpText, LocalDNSName,
strComputerDN, objSysInfo, objComputer
Set WSHNetwork = CreateObject("WScript.Network")
Path = WSHNetwork.ComputerName
Set objSysInfo = CreateObject("ADSystemInfo")
strComputerDN = objSysInfo.ComputerName
Set objComputer = GetObject("LDAP://" & strComputerDN)
LocalDNSName = objComputer.dNSHostName
Set ADOconnObj = CreateObject("ADODB.Connection")
ADOconnObj.Provider = "ADSDSOObject"
ADOconnObj.Open "ADs Provider"
'PDC FSMO
bstrADOQueryString =
"<LDAP://"&Path&">;(&(objectClass=domainDNS)(fSMORoleOwner=*));adspath;subtree"
Set RootDom = GetObject("LDAP://RootDSE")
Set RSObj = ADOconnObj.Execute(bstrADOQueryString)
Set FSMOobj = GetObject(RSObj.Fields(0).Value)
Set CompNTDS = GetObject("LDAP://" & FSMOobj.fSMORoleOwner)
Set Computer = GetObject(CompNTDS.Parent)
if StrComp(LocalDNSName, Computer.dnsHostName) = 0 then
WScript.Echo "PDC"
end if
'Rid FSMO
bstrADOQueryString =
"<LDAP://"&Path&">;(&(objectClass=rIDManager)(fSMORoleOwner=*));adspath;subtree"
Set RSObj = ADOconnObj.Execute(bstrADOQueryString)
Set FSMOobj = GetObject(RSObj.Fields(0).Value)
Set CompNTDS = GetObject("LDAP://" & FSMOobj.fSMORoleOwner)
Set Computer = GetObject(CompNTDS.Parent)
if StrComp(LocalDNSName, Computer.dnsHostName) = 0 then
WScript.Echo "RIS"
end if
'Infrastructure FSMO
bstrADOQueryString =
"<LDAP://"&Path&">;(&(objectClass=infrastructureUpdate)(fSMORoleOwner=*));adspath;subtree"
Set RSObj = ADOconnObj.Execute(bstrADOQueryString)
Set FSMOobj = GetObject(RSObj.Fields(0).Value)
Set CompNTDS = GetObject("LDAP://" & FSMOobj.fSMORoleOwner)
Set Computer = GetObject(CompNTDS.Parent)
if StrComp(LocalDNSName, Computer.dnsHostName) = 0 then
WScript.Echo "Infrastructure"
end if
'Schema FSMO
bstrADOQueryString = "<LDAP://"&RootDom.Get("schemaNamingContext")&_
">;(&(objectClass=dMD)(fSMORoleOwner=*));adspath;subtree"
Set RSObj = ADOconnObj.Execute(bstrADOQueryString)
Set FSMOobj = GetObject(RSObj.Fields(0).Value)
Set CompNTDS = GetObject("LDAP://" & FSMOobj.fSMORoleOwner)
Set Computer = GetObject(CompNTDS.Parent)
if StrComp(LocalDNSName, Computer.dnsHostName) = 0 then
WScript.Echo "Schema"
end if
'Domain Naming FSMO
bstrADOQueryString =
"<LDAP://"&RootDom.Get("configurationNamingContext")&_
">;(&(objectClass=crossRefContainer)(fSMORoleOwner=*));adspath;subtree"
Set RSObj = ADOconnObj.Execute(bstrADOQueryString)
Set FSMOobj = GetObject(RSObj.Fields(0).Value)
Set CompNTDS = GetObject("LDAP://" & FSMOobj.fSMORoleOwner)
Set Computer = GetObject(CompNTDS.Parent)
if StrComp(LocalDNSName, Computer.dnsHostName) = 0 then
WScript.Echo "Domain Naming"
end if
********************

Windows & .NET Magazine/RE // Издательство "Открытые системы" (www.osp.ru)
Постоянный адрес статьи: http://www.osp.ru/win2000/worknt/qna/406_2.htm

 

Тематические ссылки от Яндекса

Реклама





Реклама


Товары в сети


Реклама