none
Script para adicionar varios contatos de email no AD RRS feed

  • Pergunta

  • Galera, nao achei nada no forum sobre isso.

    Tenho a seguinte necessidade:

    Tenho 3 grupos UNIVERSAIS DE DISTRICUICAO criados no meu AD. Agora eu preciso adcionar cerca de 500 contatos distribuidos nesses 3 grupos (e posteriormente vai ter MAIS!).

    A fim de evitar criar todos esses contatos, eu solicitaria para a pessoa que deseja q essas listas sejam criadas, me mandasse uma planilha em EXCEL onde a Primeira coluna fosse o NOME COMPLETO DO CONTATO e a segunda coluna seria o ENDEREÇO DE EMAIL (ou qualquer outra ordem, NAO IMPORTA)

     

    Recebendo essa planilha eu gostaria de executar um script que lesse esse arquivo XLS e criasse automaticamente os contatos no meu AD. Claro, antes disso, como vai vim em XLS eu retiro os dados duplicados (caso haja).

     

    Eae galera, isso é possivel? Aguardo a ajuda dos colegas! Obrigado!


    Albert Santos
    sexta-feira, 30 de abril de 2010 14:14

Respostas

  • Option Explicit
    Dim objRootLDAP, objContainer, objContact, objExcel, objSheet
    Dim strOU, strContactName, strExcel, strEmail
    Dim intRow, strYourDescription, strFirst, strLast

    strOU = "OU=Contatos ,"
    strExcel = "C:\contatos\contatos.xls"
    intRow = 1


    Set objRootLDAP = GetObject("LDAP://rootDSE")
    Set objContainer = GetObject("LDAP://" & strOU _
    & objRootLDAP.Get("DefaultNamingContext"))

    Set objExcel = CreateObject("Excel.Application")
    Set objSheet = objExcel.Workbooks.Open(strExcel)

    ' Here is the loop that cycles through the cells
    Do Until (objExcel.Cells(intRow,1).Value) = ""
       strContactName = objExcel.Cells(intRow, 1).Value
       strEmail = objExcel.cells(intRow, 2).Value
       'strFirst = objExcel.cells(intRow, 3).Value
       'strLast = objExcel.cells(intRow, 4).Value
       Set objContact = objContainer.Create("Contact",_
       "cn=" & strContactName)
       objContact.Put "Mail", strEmail
       objContact.Put "DisplayName", strContactName
       'objContact.Put "givenName", strFirst
       'objContact.Put "sn", strLast
       objContact.SetInfo
    intRow = intRow + 1
    Loop
    objExcel.Quit
    WScript.Quit

    Se funcionar feche a thread.

    Abraço.


    Gabriel Nascimento MCP / MCSA / CCNA http://gabrielnascimentoit.spaces.live.com -- Se for útil vote.
    • Marcado como Resposta Santos Ber sexta-feira, 30 de abril de 2010 20:00
    sexta-feira, 30 de abril de 2010 19:30

Todas as Respostas

  • Colega,

    É possivel fazer isso utilizando o "CSVDE", que é uma ferramenta de linha de comando usada para import e export de objetos do AD.

    Veja o link que detalha sua utilização.

    http://support.microsoft.com/kb/327620

    abs


    Ricardo F Firmino MCP/MCTS - Se a resposta lhe ajudou, marque como util.
    sexta-feira, 30 de abril de 2010 15:20
  • Infelizmente, nao consegui fazer o que eu preciso com esse utilitario. Preciso mesmo de um script. O objeto que quero criar no AD é apenas um CONTATO, teria como fazer com esse utilitario? porque nao sei como poderia usá-lo

     

    Mas obrigado pela atenção.


    Albert Santos
    sexta-feira, 30 de abril de 2010 15:53
  • Você precisa criar os contator certo?

    Você tem uma planilha com nome, endereço de email, etc.?

    Se sim quais os campos pra que eu possa te ajudar.

    Abraço.


    Gabriel Nascimento MCP / MCSA / CCNA http://gabrielnascimentoit.spaces.live.com -- Se for útil vote.
    sexta-feira, 30 de abril de 2010 18:26
  • Na verdade, tenho uma planilha com a primeira coluna com o NOME COMPLETO DO USUARIO e a segunda coluna com ENDEREÇO DE EMAIL. E na verdade minha demanda ja subiu, estou com 1300 contatos de email que sao FORA DO MEU DOMINIO (dominio de terceiros) e eu preciso cadastras os mesmos no meu AD para que eu possa criar os grupos de distribuicao e o pessoal mandar email pra essa galera a partir desse grupo.

     

    Obrigado e aguardo retorno. ESTOU ONLINE e tenho muita urgencia disso... nao encontrei outra solucao ainda =(

     

     


    Albert Santos
    sexta-feira, 30 de abril de 2010 18:33
  • Albert,

    Crie uma OU contatos no seu dominio, e salve o arquivo excel em C:\contatos\contatos.xls

    Esse xls deve conter nome completo na coluna 1 e o email na coluna 2.

    Segue o código.

     OptionExplicit
    Dim objRootLDAP, objContainer, objContact, objExcel, objSheet
    Dim strOU, strContactName, strExcel, strEmail
    Dim intRow, strYourDescription, strFirst, strLast

    strOU = "OU=Contatos ,"
    strExcel = "C:\contatos\contatos.xls"
    intRow = 1


    Set objRootLDAP = GetObject("LDAP://rootDSE")
    Set objContainer = GetObject("LDAP://" & strOU _
    & objRootLDAP.Get("DefaultNamingContext")) 

    Set objExcel = CreateObject("Excel.Application")
    Set objSheet = objExcel.Workbooks.Open(strExcel)

    ' Here is the loop that cycles through the cells
    DoUntil (objExcel.Cells(intRow,1).Value) = ""
       strContactName = objExcel.Cells(intRow, 1).Value
       strEmail = objExcel.cells(intRow, 2).Value
       'strFirst = objExcel.cells(intRow, 3).Value
       'strLast = objExcel.cells(intRow, 4).Value
       Set objContact = objContainer.Create("Contact",_
       "cn=" & strContactName)
       objContact.Put"Mail", strEmail
       'objContact.Put "givenName", strFirst
       'objContact.Put "sn", strLast
       objContact.SetInfo
    intRow = intRow + 1
    Loop
    objExcel.Quit
    objExcel = Nothing
    WScript.Quit

    Qualquer dúvida poste e se for útil vote.

    Abraço.


    Gabriel Nascimento MCP / MCSA / CCNA http://gabrielnascimentoit.spaces.live.com -- Se for útil vote.
    sexta-feira, 30 de abril de 2010 18:57
  • Teste primeiro com duas ou 3 linhas para ver se é isso que precisa.

    Abraço.


    Gabriel Nascimento MCP / MCSA / CCNA http://gabrielnascimentoit.spaces.live.com -- Se for útil vote.
    sexta-feira, 30 de abril de 2010 19:03
  • Amigo, to tentando copiar seu codigo mas ele vem todo sem formatacao tem como vc tentar postar dinovu SEM FORMATACAO se nao terei de copiar LINHA A LINHA... 

     

     

    No aguardo.


    Albert Santos
    sexta-feira, 30 de abril de 2010 19:13
  • Option Explicit
    Dim objRootLDAP, objContainer, objContact, objExcel, objSheet
    Dim strOU, strContactName, strExcel, strEmail
    Dim intRow, strYourDescription, strFirst, strLast

    strOU = "OU=Contatos ,"
    strExcel = "C:\contatos\contatos.xls"
    intRow = 1


    Set objRootLDAP = GetObject("LDAP://rootDSE")
    Set objContainer = GetObject("LDAP://" & strOU _
    & objRootLDAP.Get("DefaultNamingContext"))

    Set objExcel = CreateObject("Excel.Application")
    Set objSheet = objExcel.Workbooks.Open(strExcel)

    ' Here is the loop that cycles through the cells
    Do Until (objExcel.Cells(intRow,1).Value) = ""
       strContactName = objExcel.Cells(intRow, 1).Value
       strEmail = objExcel.cells(intRow, 2).Value
       'strFirst = objExcel.cells(intRow, 3).Value
       'strLast = objExcel.cells(intRow, 4).Value
       Set objContact = objContainer.Create("Contact",_
       "cn=" & strContactName)
       objContact.Put "Mail", strEmail
       'objContact.Put "givenName", strFirst
       'objContact.Put "sn", strLast
       objContact.SetInfo
    intRow = intRow + 1
    Loop
    objExcel.Quit
    WScript.Quit


    Gabriel Nascimento MCP / MCSA / CCNA http://gabrielnascimentoit.spaces.live.com -- Se for útil vote.
    sexta-feira, 30 de abril de 2010 19:16
  • cara... PERFEITO é disso que eu precisava...

     

    deixa apenas eu te perguntar, tem como alterar para que o NOME COMPLETO apareça preenchido tambem no campo DISPLAY NAME do contato? 


    Albert Santos
    sexta-feira, 30 de abril de 2010 19:23
  • Option Explicit
    Dim objRootLDAP, objContainer, objContact, objExcel, objSheet
    Dim strOU, strContactName, strExcel, strEmail
    Dim intRow, strYourDescription, strFirst, strLast

    strOU = "OU=Contatos ,"
    strExcel = "C:\contatos\contatos.xls"
    intRow = 1


    Set objRootLDAP = GetObject("LDAP://rootDSE")
    Set objContainer = GetObject("LDAP://" & strOU _
    & objRootLDAP.Get("DefaultNamingContext"))

    Set objExcel = CreateObject("Excel.Application")
    Set objSheet = objExcel.Workbooks.Open(strExcel)

    ' Here is the loop that cycles through the cells
    Do Until (objExcel.Cells(intRow,1).Value) = ""
       strContactName = objExcel.Cells(intRow, 1).Value
       strEmail = objExcel.cells(intRow, 2).Value
       'strFirst = objExcel.cells(intRow, 3).Value
       'strLast = objExcel.cells(intRow, 4).Value
       Set objContact = objContainer.Create("Contact",_
       "cn=" & strContactName)
       objContact.Put "Mail", strEmail
       objContact.Put "DisplayName", strContactName
       'objContact.Put "givenName", strFirst
       'objContact.Put "sn", strLast
       objContact.SetInfo
    intRow = intRow + 1
    Loop
    objExcel.Quit
    WScript.Quit

    Se funcionar feche a thread.

    Abraço.


    Gabriel Nascimento MCP / MCSA / CCNA http://gabrielnascimentoit.spaces.live.com -- Se for útil vote.
    • Marcado como Resposta Santos Ber sexta-feira, 30 de abril de 2010 20:00
    sexta-feira, 30 de abril de 2010 19:30
  • PERFEITO... obrigado. Post Fechado!!!
    Albert Santos
    sexta-feira, 30 de abril de 2010 20:00
  • Pessoal, estou precisando desse script tb. Tentei executar agora e recebi um erro. Como posso executar esse script? Direto do AD ou de uma máquina com acesso de Administrator no AD? Esse script deve ser vbs mesmo? Vocês podem me ajudar?
    sexta-feira, 8 de janeiro de 2016 14:38
  • Boa tarde, estou tentando rodar seu script porem esta ocorrendo um erro na linha, ele cria alguns contatos e para no caminho.

    Erro

    Erro : linha 29

    Caract.:4

    Erro : O objeto já existe.

    Codigo : 80071392

    Origem : ad

    Sendo que o objeto não existe, procurei no ad ..

    quinta-feira, 24 de outubro de 2019 17:57