none
Carga no AD com lista do Excel RRS feed

  • Pergunta

  • Caros colegas, boa tarde!

    Estou precisando importar os dados de uma planilha do Excel para o AD. Esta planilha possui o ID do usuário, exemplo asilva = Alexandre Silva e o e-mail asilva@empresa.com.br.

    Recentemente fizemos a instalação do SharePoint na empresa e as informações no AD dos usuários não estão com o campo de e-mail preenchido.

    Alguém tem algum script para importar os dados da planilha no Excel para os usuários do AD?

    Grato,


    Grato, Trentini
    • Editado Fábio JrModerator terça-feira, 14 de agosto de 2012 23:21 Correção no título
    segunda-feira, 20 de julho de 2009 19:05

Respostas

  • Olá,

    Verifique o script abaixo. (fiz algumas correcoes)


    Const ForReading = 1
    Const ADS_SCOPE_SUBTREE = 2

    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") = 1000
    objCommand.Properties("Searchscope") = ADS_SCOPE_SUBTREE

    Set objExcel = CreateObject("Excel.Application")


    'caminho do arquivo excel
    Set objWorkbook = objExcel.Workbooks.Open ("c:\lista_emails_carga_AD.xls")
    intRow = 1

    Do Until objExcel.Cells(intRow,1).Value = ""

    'nome do usuario
       nome = objExcel.Cells(intRow, 1).Value
    'e-mail na coluna 2
       email = objExcel.Cells(intRow, 2).Value

       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") = 1000
       objCommand.Properties("Searchscope") = ADS_SCOPE_SUBTREE

       objCommand.CommandText = _
           "SELECT name,description,distinguishedname,instanceType FROM 'LDAP://dc=contoso,dc=local' " & _
            "WHERE objectCategory='user' And name = '"& nome & "'"

       Set objRecordSet = objCommand.Execute

       objRecordSet.MoveFirst

       Do Until objRecordSet.EOF

          cn = objRecordSet.Fields("distinguishedname").Value
          Set objUser = GetObject("LDAP://" & cn)
          objUser.mail = email
          objUser.SetInfo
       Loop
          intRow = intRow + 1
    Loop

    objExcel.Quit

    wscript.quit



    Faça os testes e nos retorne
    segunda-feira, 20 de julho de 2009 21:01

Todas as Respostas

  • Olá,

    Verifique se o script abaixo te atende:


    Const ForReading = 1
    Const ADS_SCOPE_SUBTREE = 2

    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") = 1000
    objCommand.Properties("Searchscope") = ADS_SCOPE_SUBTREE

    Set objExcel = CreateObject("Excel.Application")


    'caminho do arquivo excel
    Set objWorkbook = objExcel.Workbooks.Open ("c:\Pasta1.xls")
    intRow = 1

    Do Until objExcel.Cells(intRow,1).Value = ""
    'nome do usuario
       nome = objExcel.Cells(intRow, 1).Value
    'cargo na coluna 2
       cargo = objExcel.Cells(intRow, 2).Value
    'departamento na coluna3
       departamento = objExcel.Cells(intRow, 3).Value
    'telefone na coluna4
       telefone =objExcel.Cells(intRow, 4).Value

       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") = 1000
       objCommand.Properties("Searchscope") = ADS_SCOPE_SUBTREE

       objCommand.CommandText = _
           "SELECT name,description,distinguishedname,instanceType FROM 'LDAP://dc=contoso,dc=local' " & _
            "WHERE objectCategory='user' And name = '"& nome & "'" 

       Set objRecordSet = objCommand.Execute

       objRecordSet.MoveFirst

       Do Until objRecordSet.EOF 

          cn = objRecordSet.Fields("distinguishedname").Value
          Set objUser = GetObject("LDAP://" & cn)
          objUser.TelephoneNumber = ucase(telefone)
          objUser.SetInfo
       Loop
          intRow = intRow + 1
    Loop

    objExcel.Quit


    Faça as adaptações necessárias e faça os testes. Poste os resultados.


    Até mais,

    Jesiel

    Obs.: Se útil, classifique




    segunda-feira, 20 de julho de 2009 19:38
  • Olá,

    Verifique o script abaixo. (fiz algumas correcoes)


    Const ForReading = 1
    Const ADS_SCOPE_SUBTREE = 2

    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") = 1000
    objCommand.Properties("Searchscope") = ADS_SCOPE_SUBTREE

    Set objExcel = CreateObject("Excel.Application")


    'caminho do arquivo excel
    Set objWorkbook = objExcel.Workbooks.Open ("c:\lista_emails_carga_AD.xls")
    intRow = 1

    Do Until objExcel.Cells(intRow,1).Value = ""

    'nome do usuario
       nome = objExcel.Cells(intRow, 1).Value
    'e-mail na coluna 2
       email = objExcel.Cells(intRow, 2).Value

       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") = 1000
       objCommand.Properties("Searchscope") = ADS_SCOPE_SUBTREE

       objCommand.CommandText = _
           "SELECT name,description,distinguishedname,instanceType FROM 'LDAP://dc=contoso,dc=local' " & _
            "WHERE objectCategory='user' And name = '"& nome & "'"

       Set objRecordSet = objCommand.Execute

       objRecordSet.MoveFirst

       Do Until objRecordSet.EOF

          cn = objRecordSet.Fields("distinguishedname").Value
          Set objUser = GetObject("LDAP://" & cn)
          objUser.mail = email
          objUser.SetInfo
       Loop
          intRow = intRow + 1
    Loop

    objExcel.Quit

    wscript.quit



    Faça os testes e nos retorne
    segunda-feira, 20 de julho de 2009 21:01
  • Jesiel,

    Por gentileza delete a resposta acima, esta com os dados da empresa...

    Ao inves de copiar o script `contoso` coloquei o outro nome. Obrigado.

    Em relacao ao script "ActiveX component can´t create object: 'Excel.Application`" -- ERROR!

    Nao vai...

    Grato,
    Grato, Trentini
    segunda-feira, 20 de julho de 2009 21:29
  • Olá,

    Verifique se não ficou algum processo do Excel aberto ou os processos wscript.

    Pode ser isso.


    Fiz os testes e funcionou...

    O script procura todos os usuários do excel (coluna 1) e altera o email para os valores da coluna 2


    Até mais,

    Jesiel

    Obs.: Se útil, classifique
    terça-feira, 21 de julho de 2009 11:11
  • Vou efetuar os testes, vamos ver.



    Grato, Trentini

    terça-feira, 14 de agosto de 2012 22:39
  • Eu não consegui usar somente o campo "display name" para fazer a importação, não faz nada o AD, parece que não entende o que eu quero fazer.

    Essa foi a pergunta que fiz sobre a importação.

    http://social.technet.microsoft.com/Forums/pt/winsrv2003pt/thread/b325e9d5-94fb-41cd-a3fe-07e6a0bb750a

    Grato.


    Grato, Trentini

    terça-feira, 14 de agosto de 2012 22:41