Usuário com melhor resposta
Carga no AD com lista do Excel

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
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- Editado Jesiel S. Pereira terça-feira, 21 de julho de 2009 11:09
- Marcado como Resposta Fábio JrModerator segunda-feira, 13 de fevereiro de 2012 11:58
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
-
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- Editado Jesiel S. Pereira terça-feira, 21 de julho de 2009 11:09
- Marcado como Resposta Fábio JrModerator segunda-feira, 13 de fevereiro de 2012 11:58
-
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 -
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 -
-
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.
Grato, Trentini