Usuário com melhor resposta
Script para adicionar varios contatos de email no AD

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
Respostas
-
Option Explicit
Dim objRootLDAP, objContainer, objContact, objExcel, objSheet
Dim strOU, strContactName, strExcel, strEmail
Dim intRow, strYourDescription, strFirst, strLaststrOU = "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.QuitSe 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
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. -
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 -
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. -
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 -
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.
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
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. -
-
-
Option Explicit
Dim objRootLDAP, objContainer, objContact, objExcel, objSheet
Dim strOU, strContactName, strExcel, strEmail
Dim intRow, strYourDescription, strFirst, strLaststrOU = "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. -
-
Option Explicit
Dim objRootLDAP, objContainer, objContact, objExcel, objSheet
Dim strOU, strContactName, strExcel, strEmail
Dim intRow, strYourDescription, strFirst, strLaststrOU = "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.QuitSe 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
-
-
-
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 ..