Usuário com melhor resposta
Alterar Campos de varios usuarios no AD via Script (HELP)

Pergunta
-
Fala pessoal tudo bem??? Pessoal to precisando de uma grande ajuda....
To precisando alterar os seguintes campos dos usuarios no AD?
Telefone e Departamento!!!
Já exportei os usuarios para um arquivo CSV e já coloquei os campos, agora preciso importar para o Meu AD, via Script... Alguem poderia me ajudar....
O que pensei é o seguinte..
Abre o CSV ou TXT, pega o nome do Usuario, procura no AD e edita os campos, passa pra outro altera, etc,etc,etc....
A logica eu até sei, o que tá me pegando é escrever...
Agradeço desde já o pessoal...
Marcos Valente (MCP) (marcos.r.valente@gmail.com)
Respostas
-
Olá,
O sub buscaOU faz esse trabalho.
No excel, você deve ter o Usuário na primeira coluna e o Departamento na segunda coluna.
O nome do usuário deve ser o nome utilizado no login (canonical name)
Até mais,
Jesiel
Obs.: Se útil, classifique
- Marcado como Resposta Marcos Valente segunda-feira, 28 de fevereiro de 2011 14:35
-
Olá Marcos,
Verifique se o script abaixo te ajuda:
Const E_ADS_PROPERTY_NOT_FOUND = &h8000500D
Set FileSystem = WScript.CreateObject("Scripting.FileSystemObject")
Set OutPutFile = FileSystem.CreateTextFile("Resultado.txt", True)
Set objExcel = CreateObject("Excel.Application")
Set objWorkbook = objExcel.Workbooks.Open ("C:\users.xls")
intRow = 1
dim DomainString, UserString, WSHNetwork, WSHShell
dim UserObj, GroupObj
ON ERROR RESUME NEXT
Set WSHShell = WScript.CreateObject("WScript.Shell")
Set WSHNetwork = WScript.CreateObject("WScript.Network")
strTitle="Mostrar os Grupos do Usuário"
DomainString = WSHNetwork.UserDomain
Do Until objExcel.Cells(intRow,1).Value = ""
UserString = objExcel.Cells(intRow, 1).Value 'colouna 1 do arquivo do excel'
Departamento = objExcel.Cells(intRow,2).Value 'coluna 2 do arquivo do excel'
Set UserObj = GetObject("WinNT://" & DomainString & "/" & UserString)
OU = BuscaOU(UserObj.FullName)
if Len(OU) = 0 Then
OutPutFile.WriteLine UserObj.FullName & " - " & "Não encontrado a OU" & VBCRLF
End if
set objUser = GetObject("LDAP://cn=" & LCase(UserObj.FullName) & "," & LCase(OU))
objUser.department = Departamento
objUser.setInfo
intRow = intRow + 1
Loop
objExcel.Quit
wscript.quit
Function BuscaOU(byval UserName)
Dim namingContext, ldapFilter, ou
Dim cn, cmd, rs
Dim objRootDSE
Set objRootDSE = getobject("LDAP://RootDSE")
namingContext = objRootDSE.Get("defaultNamingContext")
set objRootDSE = nothing
ldapFilter = "<LDAP://" & namingContext & _
">;(&(objectCategory=User) (name=" & userName & "))" & _
";distinguishedName;subtree"
set cn = createObject("ADODB.Connection")
set cmd = createObject("ADODB.Command")
cn.open "Provider=ADsDSOOBject;"
cmd.activeconnection = cn
cmd.commandtext = ldapFilter
set rs = cmd.execute
if rs.eof <> true and rs.bof <> true then
ou = rs(0)
ou = mid(ou,instr(ou,",")+1,Len(ou) - instr(ou,","))
BuscaOU = ou
End if
rs.close
cn.close
End Function
No exemplo acima, utilizei um arquivo do excel (c:\users.xls) Onde na coluna 1 está o nome do Usuário e na coluna 2 está o departamento.
Agora é só você adicionar as colunas que você precisa.
Até mais,
Jesiel
Obs.: Se útil, classifique- Marcado como Resposta Marcos Valente segunda-feira, 28 de fevereiro de 2011 14:35
Todas as Respostas
-
-
Olá,
Você pode usar o cvsde. Dá uma olhada no link abaixo:
http://support.microsoft.com/default.aspx/kb/327620/pt-br
Poste os resultados.
Até mais,
Jesiel
Obs.: Se útil, classifique
Bom dia Jesiel...
Obrigado pela ajuda... Mais o que preciso é o seguinte, já tenho uma planilha delimitada, coloquei os campos agora preciso mudar no AD... Não sei se o CVSDE vai me ajudar....
QUeria mesmo um Script onde ele le acada linha da minha planilha, pega os campos e atualizado no AD... Ele estaria utilizando a minha planilha pra fazer um merge no AD.. Entendeu????
Ah um detalhe que esqueci de dizer, meu AD é todo em 2003........
Obrigado a quem puder ajudar...
Marcos Valente (MCP) (marcos.r.valente@gmail.com) -
Olá Marcos,
Verifique se o script abaixo te ajuda:
Const E_ADS_PROPERTY_NOT_FOUND = &h8000500D
Set FileSystem = WScript.CreateObject("Scripting.FileSystemObject")
Set OutPutFile = FileSystem.CreateTextFile("Resultado.txt", True)
Set objExcel = CreateObject("Excel.Application")
Set objWorkbook = objExcel.Workbooks.Open ("C:\users.xls")
intRow = 1
dim DomainString, UserString, WSHNetwork, WSHShell
dim UserObj, GroupObj
ON ERROR RESUME NEXT
Set WSHShell = WScript.CreateObject("WScript.Shell")
Set WSHNetwork = WScript.CreateObject("WScript.Network")
strTitle="Mostrar os Grupos do Usuário"
DomainString = WSHNetwork.UserDomain
Do Until objExcel.Cells(intRow,1).Value = ""
UserString = objExcel.Cells(intRow, 1).Value 'colouna 1 do arquivo do excel'
Departamento = objExcel.Cells(intRow,2).Value 'coluna 2 do arquivo do excel'
Set UserObj = GetObject("WinNT://" & DomainString & "/" & UserString)
OU = BuscaOU(UserObj.FullName)
if Len(OU) = 0 Then
OutPutFile.WriteLine UserObj.FullName & " - " & "Não encontrado a OU" & VBCRLF
End if
set objUser = GetObject("LDAP://cn=" & LCase(UserObj.FullName) & "," & LCase(OU))
objUser.department = Departamento
objUser.setInfo
intRow = intRow + 1
Loop
objExcel.Quit
wscript.quit
Function BuscaOU(byval UserName)
Dim namingContext, ldapFilter, ou
Dim cn, cmd, rs
Dim objRootDSE
Set objRootDSE = getobject("LDAP://RootDSE")
namingContext = objRootDSE.Get("defaultNamingContext")
set objRootDSE = nothing
ldapFilter = "<LDAP://" & namingContext & _
">;(&(objectCategory=User) (name=" & userName & "))" & _
";distinguishedName;subtree"
set cn = createObject("ADODB.Connection")
set cmd = createObject("ADODB.Command")
cn.open "Provider=ADsDSOOBject;"
cmd.activeconnection = cn
cmd.commandtext = ldapFilter
set rs = cmd.execute
if rs.eof <> true and rs.bof <> true then
ou = rs(0)
ou = mid(ou,instr(ou,",")+1,Len(ou) - instr(ou,","))
BuscaOU = ou
End if
rs.close
cn.close
End Function
No exemplo acima, utilizei um arquivo do excel (c:\users.xls) Onde na coluna 1 está o nome do Usuário e na coluna 2 está o departamento.
Agora é só você adicionar as colunas que você precisa.
Até mais,
Jesiel
Obs.: Se útil, classifique- Marcado como Resposta Marcos Valente segunda-feira, 28 de fevereiro de 2011 14:35
-
-
Olá,
O sub buscaOU faz esse trabalho.
No excel, você deve ter o Usuário na primeira coluna e o Departamento na segunda coluna.
O nome do usuário deve ser o nome utilizado no login (canonical name)
Até mais,
Jesiel
Obs.: Se útil, classifique
- Marcado como Resposta Marcos Valente segunda-feira, 28 de fevereiro de 2011 14:35
-
Pessoal,
estou tentando rodar esse script, mas tenho o erro abaixo e não consegui resolver o problema. Poderiam me ajudar?
Erro: O componente do ActiveX não pode criar objeto: 'Excel.Application'.
Código: 800A01AD
Origem: Erro de tempo de execução do Microsoft VBScript.
-