Иринка7, можете воспользоваться приведённым ниже сценарием (на VBS). Возможно, он поможет Вам разобраться в структуре домена. Запускать его надо либо на контроллере домена (любом), либо из-под "учётки" администратора домена. Сохраните код сценария в простом текстовом файле, но с расширением .VBS.
читать дальше »
Код:
Dim objRoot, objServers, objSrv, objNTDS
Dim strDomain, arrBinds, arrFSMO, strList, intTemp, i
Dim objWMI, objCollection, objItem
Const NTDSDSA_OPT_IS_GC = 1
On Error Resume Next
Set objRoot = GetObject("LDAP://RootDSE")
If Err.Number = 0 Then
strDomain = objRoot.Get("defaultNamingContext")
If Err.Number = 0 Then
Set objServers = GetObject("LDAP://cn=Servers,cn=Default-First-Site-Name,cn=Sites,cn=Configuration," & strDomain)
If Err.Number = 0 Then
strList = "Контроллеры:" & vbNewLine
For Each objSrv In objServers
strList = strList & objSrv.cn
Set objWMI = GetObject("winmgmts:{impersonationLevel=impersonate}!\\" & objSrv.cn & "\root\cimv2")
If Err.Number = 0 Then
Set objCollection = objWMI.ExecQuery("SELECT DomainRole FROM Win32_ComputerSystem")
For Each objItem In objCollection
If objItem.DomainRole = 5 Then
strList = strList & ", основной"
Else
strList = strList & ", дополнительный"
End If
Next
Else
Err.Clear
End If
Set objNTDS = GetObject("LDAP://" & GetObject("LDAP://" & objSrv.cn & "/RootDSE").Get("dsServiceName"))
intTemp = objNTDS.Get("options")
If intTemp And NTDSDSA_OPT_IS_GC Then
strList = strList & ", глобальный каталог" & vbNewLine
Else
strList = strList & vbNewLine
End If
Next
Set objItem = Nothing: Set objCollection = Nothing: Set objWMI = Nothing: Set objNTDS = Nothing
strList = strList & vbNewLine & "Хозяева FSMO:" & vbNewLine
arrBinds = Array("LDAP://" & strDomain, "LDAP://" & objRoot.Get("schemaNamingContext"), _
"LDAP://CN=Partitions," & objRoot.Get("configurationNamingContext"), _
"LDAP://CN=RID Manager$,CN=System," & strDomain, "LDAP://CN=Infrastructure," & strDomain)
arrFSMO = Array("эмулятор PDC - ", "схема - ", "именование домена - ", "относительные идентификаторы - ", "инфраструктура - ")
For i = 0 To UBound(arrBinds)
If Err.Number = 0 Then
Set objItem = GetObject(GetObject("LDAP://" & GetObject(arrBinds(i)).Get("fSMORoleOwner")).Parent)
If Err.Number = 0 Then
strList = strList & arrFSMO(i) & Mid(objItem.Name, 4) & vbNewLine
Else
strList = strList & arrFSMO(i) & "ошибка " & Err.Number & " привязки к объекту-хозяину" & vbNewLine
Err.Clear
End If
Else
strList = strList & arrFSMO(i) & "ошибка " & Err.Number & " привязки к базовому объекту" & vbNewLine
Err.Clear
End If
Next
Set objItem = Nothing
WScript.Echo strList
Else
WScript.Echo "ошибка " & Err.Number & " привязки к контейнеру SERVERS" & vbNewLine
Err.Clear
End If
Set objServers = Nothing
Else
WScript.Echo "ошибка " & Err.Number & " определения имени домена" & vbNewLine
Err.Clear
End If
Else
WScript.Echo "ошибка " & Err.Number & " привязки к объекту RootDSE" & vbNewLine
Err.Clear
End If
Set objRoot = Nothing
WScript.Quit 0
|