Página 1 de 1

[Script] VBScript que retorna as roles FSMO dos servidores Windows do Dominio

Enviado: 19 Mai 2014 16:51
por marceloleaes
Script útil para consultar as roles fsmo durante processo de migração de dominios ou mesmo para ter a relação atual de sua floresta do AD quanto a quem é responsável por qual role.

Código: Selecionar todos

Option Explicit
Dim WSHNetwork, objArgs, ADOconnObj, bstrADOQueryString, RootDom, RSObj
Dim FSMOobj,CompNTDS, Computer, Path, HelpText


Set WSHNetwork = CreateObject("WScript.Network")
Set objArgs = WScript.Arguments

Select Case objArgs.Count
    Case 0
        Path = InputBox("Informe o netbios de seu dominio"&_
                        " conforme exemplo: 'DC=contoso,DC=local':","Ação do usuário requerida",WSHNetwork.ComputerName)
End Select

Set ADOconnObj = CreateObject("ADODB.Connection")

ADOconnObj.Provider = "ADSDSOObject"
ADOconnObj.Open "ADs Provider"

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)

Dim varPDCFSMO
varPDCFSMO = "PDC FSMO: " & Computer.dnsHostName

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)

Dim varRIDFSMO
varRIDFSMO = varPDCFSMO & vbcrlf & "RID FSMO: " & Computer.dnsHostName

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)

Dim varINFRAFSMO
varINFRAFSMO = varRIDFSMO & vbcrlf & "Infrastructure FSMO: " & Computer.dnsHostName

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)

Dim varSCHMFSMO
varSCHMFSMO = varINFRAFSMO & vbcrlf & "Schema FSMO: " & Computer.dnsHostName

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)

Dim varDOMAINFSMO
varDOMAINFSMO = varSCHMFSMO & vbcrlf & "Domain Naming FSMO: " & Computer.dnsHostName

wscript.echo varDOMAINFSMO