none
Exportar dados do AD para planilha no Excel RRS feed

  • Pergunta

  • Olá

    Gostaria de saber como exportar dados do AD do server 2003 para uma planilha do excel.

    Eu gostaria que ele trazesse da seguine forma na planilha:

    Usuario: Alexandre

    Membro de: Financeiro_Fin, Administrativo_am, TI.

    Eu gostaria que ficasse assim em uma planilha do excel, tem como eu importar de todos os usuarios do AD e inserir numa planilha?


    quarta-feira, 28 de março de 2012 13:49

Respostas

  • Bom dia,

    O script abaixo faz o inverso, traz os grupos e informa quem faz parte do mesmo.

    Const ADS_SCOPE_SUBTREE = 2

    Set FileSystem = WScript.CreateObject("Scripting.FileSystemObject")
    Set objDSE = GetObject("LDAP://rootDSE")
    Set OutPutFile = FileSystem.CreateTextFile("Lista_de_Grupos.txt", True)

    strDominio = objDSE.Get("defaultNamingContext")

    Set objConnection = CreateObject("ADODB.Connection")
    Set objCommand =   CreateObject("ADODB.Command")
    objConnection.Provider = "ADsDSOObject"
    objConnection.Open "Active Directory Provider"
    Set objCommand.ActiveConnection = objConnection

    objCommand.Properties("Page Size") = 3000
    objCommand.Properties("Searchscope") = ADS_SCOPE_SUBTREE

    objCommand.CommandText = _
        "SELECT name,description,distinguishedname,instanceType FROM 'LDAP://" & strDominio & "' WHERE objectCategory='group'" 

    Set objRecordSet = objCommand.Execute

    objRecordSet.MoveFirst

    Do Until objRecordSet.EOF
        nome = objRecordSet.Fields("name").Value
        descricao = objRecordSet.Fields("description").Value
        cn = objRecordSet.Fields("distinguishedname").Value
        OutPutFile.WriteLine nome & ";" & cn
        pegaGrupo cn
        objRecordSet.MoveNext
    Loop

    Function pegaGrupo(nomegrupo)

    on error resume next

    Set objGroup = GetObject("LDAP://" & nomegrupo)
    objGroup.GetInfo

    arrMemberOf = objGroup.GetEx("member")

    OutPutFile.WriteLine "============= MEMBROS DO GRUPO " & nome & " ================"
    For Each strMember in arrMemberOf
       OutPutFile.WriteLine strMember
    Next

    OutPutFile.WriteLine " "

    End Function


    Rafael S. AMARAL
    U. P. Mackenzie


    quinta-feira, 29 de março de 2012 13:10

Todas as Respostas

  • Alguem pode me ajudar?
    quarta-feira, 28 de março de 2012 14:12
  • Este formato que vc propõem não é bem padrão excel.

    Tente utilizar a ferramenta LDIFDE, ela gera o arquivo e depois vc pode importar para o excel.

    Ref.:

    LDIFDE - Exportar / importar dados de Active Directory

    http://support.microsoft.com/kb/555634/pt-br


    Fábio de Paula Junior

    quarta-feira, 28 de março de 2012 16:15
    Moderador
  • Bom dia,

    O script abaixo faz o inverso, traz os grupos e informa quem faz parte do mesmo.

    Const ADS_SCOPE_SUBTREE = 2

    Set FileSystem = WScript.CreateObject("Scripting.FileSystemObject")
    Set objDSE = GetObject("LDAP://rootDSE")
    Set OutPutFile = FileSystem.CreateTextFile("Lista_de_Grupos.txt", True)

    strDominio = objDSE.Get("defaultNamingContext")

    Set objConnection = CreateObject("ADODB.Connection")
    Set objCommand =   CreateObject("ADODB.Command")
    objConnection.Provider = "ADsDSOObject"
    objConnection.Open "Active Directory Provider"
    Set objCommand.ActiveConnection = objConnection

    objCommand.Properties("Page Size") = 3000
    objCommand.Properties("Searchscope") = ADS_SCOPE_SUBTREE

    objCommand.CommandText = _
        "SELECT name,description,distinguishedname,instanceType FROM 'LDAP://" & strDominio & "' WHERE objectCategory='group'" 

    Set objRecordSet = objCommand.Execute

    objRecordSet.MoveFirst

    Do Until objRecordSet.EOF
        nome = objRecordSet.Fields("name").Value
        descricao = objRecordSet.Fields("description").Value
        cn = objRecordSet.Fields("distinguishedname").Value
        OutPutFile.WriteLine nome & ";" & cn
        pegaGrupo cn
        objRecordSet.MoveNext
    Loop

    Function pegaGrupo(nomegrupo)

    on error resume next

    Set objGroup = GetObject("LDAP://" & nomegrupo)
    objGroup.GetInfo

    arrMemberOf = objGroup.GetEx("member")

    OutPutFile.WriteLine "============= MEMBROS DO GRUPO " & nome & " ================"
    For Each strMember in arrMemberOf
       OutPutFile.WriteLine strMember
    Next

    OutPutFile.WriteLine " "

    End Function


    Rafael S. AMARAL
    U. P. Mackenzie


    quinta-feira, 29 de março de 2012 13:10
  • Bom dia,

    O script abaixo faz o inverso, traz os grupos e informa quem faz parte do mesmo.

    Const ADS_SCOPE_SUBTREE = 2

    Set FileSystem = WScript.CreateObject("Scripting.FileSystemObject")
    Set objDSE = GetObject("LDAP://rootDSE")
    Set OutPutFile = FileSystem.CreateTextFile("Lista_de_Grupos.txt", True)

    strDominio = objDSE.Get("defaultNamingContext")

    Set objConnection = CreateObject("ADODB.Connection")
    Set objCommand =   CreateObject("ADODB.Command")
    objConnection.Provider = "ADsDSOObject"
    objConnection.Open "Active Directory Provider"
    Set objCommand.ActiveConnection = objConnection

    objCommand.Properties("Page Size") = 3000
    objCommand.Properties("Searchscope") = ADS_SCOPE_SUBTREE

    objCommand.CommandText = _
        "SELECT name,description,distinguishedname,instanceType FROM 'LDAP://" & strDominio & "' WHERE objectCategory='group'" 

    Set objRecordSet = objCommand.Execute

    objRecordSet.MoveFirst

    Do Until objRecordSet.EOF
        nome = objRecordSet.Fields("name").Value
        descricao = objRecordSet.Fields("description").Value
        cn = objRecordSet.Fields("distinguishedname").Value
        OutPutFile.WriteLine nome & ";" & cn
        pegaGrupo cn
        objRecordSet.MoveNext
    Loop

    Function pegaGrupo(nomegrupo)

    on error resume next

    Set objGroup = GetObject("LDAP://" & nomegrupo)
    objGroup.GetInfo

    arrMemberOf = objGroup.GetEx("member")

    OutPutFile.WriteLine "============= MEMBROS DO GRUPO " & nome & " ================"
    For Each strMember in arrMemberOf
       OutPutFile.WriteLine strMember
    Next

    OutPutFile.WriteLine " "

    End Function


    Rafael S. AMARAL
    U. P. Mackenzie



    Cara vc é show!!! isso é oq eu precisava... mt obrigado.
    quinta-feira, 7 de março de 2013 12:20
  • Bom dia,

    O script abaixo faz o inverso, traz os grupos e informa quem faz parte do mesmo.

    Const ADS_SCOPE_SUBTREE = 2

    Set FileSystem = WScript.CreateObject("Scripting.FileSystemObject")
    Set objDSE = GetObject("LDAP://rootDSE")
    Set OutPutFile = FileSystem.CreateTextFile("Lista_de_Grupos.txt", True)

    strDominio = objDSE.Get("defaultNamingContext")

    Set objConnection = CreateObject("ADODB.Connection")
    Set objCommand =   CreateObject("ADODB.Command")
    objConnection.Provider = "ADsDSOObject"
    objConnection.Open "Active Directory Provider"
    Set objCommand.ActiveConnection = objConnection

    objCommand.Properties("Page Size") = 3000
    objCommand.Properties("Searchscope") = ADS_SCOPE_SUBTREE

    objCommand.CommandText = _
        "SELECT name,description,distinguishedname,instanceType FROM 'LDAP://" & strDominio & "' WHERE objectCategory='group'" 

    Set objRecordSet = objCommand.Execute

    objRecordSet.MoveFirst

    Do Until objRecordSet.EOF
        nome = objRecordSet.Fields("name").Value
        descricao = objRecordSet.Fields("description").Value
        cn = objRecordSet.Fields("distinguishedname").Value
        OutPutFile.WriteLine nome & ";" & cn
        pegaGrupo cn
        objRecordSet.MoveNext
    Loop

    Function pegaGrupo(nomegrupo)

    on error resume next

    Set objGroup = GetObject("LDAP://" & nomegrupo)
    objGroup.GetInfo

    arrMemberOf = objGroup.GetEx("member")

    OutPutFile.WriteLine "============= MEMBROS DO GRUPO " & nome & " ================"
    For Each strMember in arrMemberOf
       OutPutFile.WriteLine strMember
    Next

    OutPutFile.WriteLine " "

    End Function


    Rafael S. AMARAL
    U. P. Mackenzie



    Cara vc é show!!! isso é oq eu precisava... mt obrigado.

    Pessoal, esse script me ajudou mt mas ainda preciso de outra informação... como posso fazer ele me trazer o login do usuário ao invés do nome completo??

    Tipo jose.silva e não Jose Maria da Silva???

    Obrigado!

    quinta-feira, 7 de março de 2013 17:04