É muito comum, administradores de rede receberem uma lista com dezenas de usuários novos para serem criados no AD, e geralmente, “pra ontem”.
Para automatizar a criação desses usuários, podemos utilizar um script e uma planilha (XLS) para realizar esta tarefefa em 2 cliques.
A planilha deverá conter as informações dos usuários e o script, irá criar os usuários de acordo com os campos (LDAP attributes) necessários.
Bom, começando pela planilha.
Cada coluna é um atributo e neste caso, o que importa é a ordem dos numeros (1 a 12).
Crie uma planilha com qualquer nome e salve-a em um diretório (Salvei em C:\Scripts como User.xls).
Abaixo, o script VBS:
Option Explicit
Dim objRootLDAP, objContainer, objUser, objShell
Dim objExcel, objSpread, intRow
Dim strUser, strOU, strSheet
Dim strCN, strSam, strFirst, strLast, strPWD, strinitials, stroffice, strmail, strtitle, strdepartment, strprincipalname, strTitulo, strMensagem, strcompany, strdescription, strtelephoneNumberstrOU = “OU=CONTAS NOVAS ,”
strSheet = “C:\scripts\User.xls”‘ Bind to Active Directory, Users container.
Set objRootLDAP = GetObject(“LDAP://rootDSE”)
Set objContainer = GetObject(“LDAP://” & strOU & objRootLDAP.Get(“defaultNamingContext”))‘ Open the Excel spreadsheet
Set objExcel = CreateObject(“Excel.Application”)
Set objSpread = objExcel.Workbooks.Open(strSheet)
intRow = 3 ‘Row 1 often contains headings‘ Here is the ‘DO…Loop’ that cycles through the cells
‘ Note intRow, x must correspond to the column in strSheet
Do Until objExcel.Cells(intRow,1).Value = “”
strSam = Trim(objExcel.Cells(intRow, 1).Value)
strCN = Trim(objExcel.Cells(intRow, 2).Value)
strFirst = Trim(objExcel.Cells(intRow, 3).Value)
strinitials = Trim(objExcel.Cells(intRow, 4).Value)
strLast = Trim(objExcel.Cells(intRow, 5).Value)
strPWD = Trim(objExcel.Cells(intRow, 6).Value)
stroffice = Trim(objExcel.Cells(intRow, 7).Value)
strmail = Trim(objExcel.Cells(intRow, 8).Value)
strprincipalname = strSam & “@teste.interno”
strtitle = Trim(objExcel.Cells(intRow, 9).Value)
strdepartment = Trim(objExcel.Cells(intRow, 10).Value)
strdescription = Trim(objExcel.Cells(intRow, 11).Value)
strtelephoneNumber = Trim(objExcel.Cells(intRow, 12).Value)
strcompany = “Empresa S.A”‘ Build the actual User from data in strSheet.
Set objUser = objContainer.Create(“User”, “cn=” & strCN)
objUser.sAMAccountName = strSam
objUser.givenName = strFirst
objUser.initials = strinitials
objUser.sn = strLast
objUser.SetInfo
objUser.physicalDeliveryOfficeName = stroffice
objUser.mail = strmail
objUser.userPrincipalName= strprincipalname
objUser.displayName = strCN
objUser.title = strtitle
objUser.department = strdepartment
objUser.company = strcompany
objUser.description = strdescription
objUser.telephoneNumber = strtelephoneNumber‘ Separate section to enable account with its password
objUser.userAccountControl = 512
objUser.pwdLastSet = 0
objUser.SetPassword strPWD
objUser.SetInfointRow = intRow + 1
Loop
objExcel.QuitstrTitulo = “COMANDO CONCLUIDO!!”
strMensagem = _
“USUARIO(S) CRIADO(S) COM SUCESSO!” & vbcrlf & vbcrlf & _
” Mova para OU correta e crie a mailbox.” & vbcrlf & _
“” & vbcrlf & _
“”
‘BtnCode = WshShell.Popup(strMensagem, 5, “Informação:”, 64 + 0)
msgbox strMensagem, 0 + 64, strTituloWScript.Quit
Agora, vamos enteder o Script – vou desmembrar as partes mais importantes e comentá-las:
Dim strCN, strSam, strFirst, strLast, strPWD, strinitials, stroffice, strmail, strtitle, strdepartment, strprincipalname, strTitulo, strMensagem, strcompany, strdescription, strtelephoneNumber
Esta parte é onde são declaradas as variáveis, ou seja, os atributos que vou utilizar. Se tiver que acrescentar algum, insira nesta linha (separado por vírgula) ou retire algum campo desnecessário.
strOU = “OU=CONTAS NOVAS ,”
strSheet = “C:\scripts\User.xls”
Bem intuitivo a sintaxe acima. StrOU é em qual Unidade Organizacional os usuários serão criados e strSheet é o caminho da planilha, que também uso para armazenar o script.
strSam = Trim(objExcel.Cells(intRow, 1).Value)
strCN = Trim(objExcel.Cells(intRow, 2).Value)
strFirst = Trim(objExcel.Cells(intRow, 3).Value)
strinitials = Trim(objExcel.Cells(intRow, 4).Value)
strLast = Trim(objExcel.Cells(intRow, 5).Value)
strPWD = Trim(objExcel.Cells(intRow, 6).Value)
stroffice = Trim(objExcel.Cells(intRow, 7).Value)
strmail = Trim(objExcel.Cells(intRow, 8).Value)
strprincipalname = strSam & “@teste.interno”
strtitle = Trim(objExcel.Cells(intRow, 9).Value)
strdepartment = Trim(objExcel.Cells(intRow, 10).Value)
strdescription = Trim(objExcel.Cells(intRow, 11).Value)
strtelephoneNumber = Trim(objExcel.Cells(intRow, 12).Value)
strcompany = “Empresa S.A”
Esta a parte é onde “acontece” as coisas – a parte que exige mais atenção. Como pode ser visto, todas as variáveis estão informadas ai. Observe que cada variavel está vinculada a um número, que no caso, é a coluna da planilha que já foi criada.
Ex: strdepartment = Trim(objExcel.Cells(intRow, 10).Value)
strdepartment é o LDAP Attribute do campo Departamento e intRow, 10 é a coluna 10 da nossa planilha.
Script executado:
Agora segue prints das informações do objeto no AD que definimos:
Link com informações sobre LDAP attributes
Se não for necessário preencher todos os campos que utilzei acima, é só retirar a coluna da planilhar e comentar ou deletar a variável no script.
Bom pessoal, espero que seja útil!
[ ]´s
@grvalle
Gustavo muito bom o tutorial, meus parabens !
Obrigado Wederson!
Isso funciona no Windows Server 2003?
Sim Tiago, tanto 2003 quanto no 2008.
Gustavo, este script funciona no windows 2008 R2, pois tentei rodar e deu o seguinte erro: line: 7 char: 9 error: Invalid character, verifiquei esta linha e está da seguinte forma: strOU = “OU=Users ,”, se puder me ajudar, lhe agradeço…
Alberto, funciona sim no 2008 R2, tanto que foi nele que homologuei a utilização pela primeira vez.
Quando costuma dar este erro, verifica se não “perdeu a formação” na hora de copiar o codido e colar no bloco de notas. Acontece com frequência.
Cara o mesmo erro que ocorreu com o albertoelarissa está acontecendo comigo… tireii as ” e pulou o erro então a linha de baixo a da OU começou a dar o erro… o que eu faço?
Carlos, segue link para download do script e planilha:
http://www.4shared.com/rar/ug0t5EUE/Scripts.html?
Assim elimina a possibilidade de ser erro de caracteres/formação/tabulação…
Os erros mais comuns são de “caminho” de OU ou Builtin… na dúvida, crie uma OU = do exemplo e altere os campos.
Bom dia Gustavo!
Fiz o download do script para criação de 400 usuários. Na planilha, apenas preenchi as informação que são necessário para mim (Username, Nome completo, Primeiro nome, Sobrenome, Password, mail, Descricao) e os demais deixei em branco. No script comentei as linhas ‘strcompany = “Cast Informatica S.A” (nao quero colocar nome da empresa) e ‘objUser.pwdLastSet = 0 (nao quero que a senha seja alterada no primeiro logon). Ao executar o script, os usuários não foram criados. Lembrando que, foi criada uma OU com o mesmo nome que consta no script.
Obs.: O script tenho que executar em minha estação de trabalho ou direto de um DC?
Aguardo retorno.
Alessandro, você deve então retirar os campos que não serão usados, da planilha e do script.
Muito dos erros que o pessoal tem também, é o fato de não substituir todas as variáveis do script (como DOMINIO e caminho da OU).
Outro detalhe, aproveitando o comentário é que se houver um usuário já criado, o script é interrompido, ou seja, neste script não é feito uma checagem antes.
Não tenho conseguido responder a todos em virtude de “correria”, mas espero que sejam úteis os relatos anteriores e este também!
O script é simples, não tem o que dar erro (se substituído todos os campos) e estar batendo tudo com a planilha!
Abs!
Gustavo, você saberia me dizer como eu obtenho o login de um usuário em específico e sem sair da planilha, ou seja, eu informar um atributo chava (employeeID) e ele me retornar em outra coluna o login do usuário.??? Desta forma eu consigo saber se o usuário já existe antes de criar a conta.
mesma coisa o meu linha 7 ,, conseguiram resolver?
Marcio, o problema da linha 7 é que se você copiar o texto dessa página e colar no bloco de notas, o caractere ” (aspas) tem que ser modificado para ” (aspas do notepad). Perceba que tem uma leve semelhança entre ele.
Bom… no meu caso foi isso. O ruim é que tem que alterar item por item, não tem como utilizar o Ctrl+H (substituir). O mesmo vale para ‘ (apóstrofo).
Você matou a charada! É exatamente isso! Obrigado!
Caso eu queira criar os usuários dentro de uma “sub OU”, tem como? Não sei a sintaxe, acredito que seja algo do tipo: strOU = “OU=Alunos\2012\5osAnos”. Você sabe dizer se tem como? Abraço
OUs são resolvidas de trás para frente. Então…
no caso acima teria ficado:
ou=sosalunos,ou=2012,ou=Alunos,
Gustavo, se por acaso eu deixar alguma linha ou coluna da tabela do excel em branco, dará algum tipo de erro?
Diego, elimine do script os atributos que não for usar e exclua as células.
Abs!
Gustavo, estou tentando rodar o script em um DC com Win 2008 R2, no entanto está dando o erro: linha:30, caract: 1 Erro: Acesso negado. Código 80070005, Origem: Active Directory. Pesquisei sobre esse código e não encontrei nenhuma referência
Bom Dia!
Conseguiu resolver este problema de código 80070005?
Pois estou tendo o mesmo problema.
Obrigado
Gustavo, Parabéns.
Excelente Tutorial.
Muito Obrigado. Funcionou perfeitamente.
Muito obrigado! Aqui funcionou perfeitamente.
Muito bom!!! estou testando frequentemente aqui.
como e que faz se a gte quer criar os usuarios dentro de uma unidade organizacional que esta dentro de outra???
Wagner, supondo que sua OU seja OU=Principal\sub1\sub2\
Altere o “strOU” para OU=sub2, OU=sub1, OU=Principal, que irá funcionar, sempre em ordem inversa a OU.
Gustavo, parabéns pelo site.
Teria alguma forma de criar os usuários e já adiciona-los em alguns grupos?
Obg.
Gustavo Valle, parabéns pelo script. Só preciso de mais uma ajuda, o script rodou blz.. consegui cadastrar alguns testes.. Recebi uma lista com 650 nomes novos. Porém nessa lista provavelmente vai ter nomes já cadastrado.. Quando o script encontrar alguém cadastrado ele dá erro e não mostra quem tá cadastrado, como faço pra resolver isso… ou seja.. ou ele mostra quem tá cadastrado ou apenas ingnora e vai para o proximo, temo como isso ? obrigado mais uma vez.
Boa noite!! Antes de mais nada, Paranbéns pelo trabalho e pelo material! show de bola!! Meu caro, baixei o script, alterei os campos, deu tudo certo na importação, agora quando tento criar um usuario apenas diretamente pelo ad, não tras todas as guias da propriedades do usuarios… saberia me dizer esse script remove as guias na criação manual?:??? abraçosssss
Desconsiderar!! Bobera minhaa!!
O meu esta dando erro na linha 47 objUser.SetInfo.
o que pode ser?
Desculpe na verdade é a linha 61…
objUser.SetPassword strPWD
Abaixo o script:
‘———————————————————————-‘
‘————————–Criação de login—————————-‘
‘———————————————————————-‘
Option Explicit
Dim objRootLDAP, objContainer, objUser, objShell
Dim objExcel, objSpread, intRow
Dim strUser, strOU, strSheet
Dim strCN, strSam, strFirst, strLast, strPWD, strinitials, stroffice, strmail, strtitle, strdepartment, strprincipalname, strTitulo, strMensagem, strdescription, strtelephoneNumber
strOU = “OU=imp ,”
strSheet = “C:\scripts\user01.xlsx”
‘ Bind to Active Directory, Users container.
Set objRootLDAP = GetObject(“LDAP://rootDSE”)
Set objContainer = GetObject(“LDAP://” & strOU & objRootLDAP.Get(“defaultNamingContext”))
‘ Open the Excel spreadsheet
Set objExcel = CreateObject(“Excel.Application”)
Set objSpread = objExcel.Workbooks.Open(strSheet)
intRow = 3 ‘Row 1 often contains headings
‘ Here is the ‘DO…Loop’ that cycles through the cells
‘ Note intRow, x must correspond to the column in strSheet
Do Until objExcel.Cells(intRow,1).Value = ” ”
strSam = Trim(objExcel.Cells(intRow, 1).Value)
strCN = Trim(objExcel.Cells(intRow, 2).Value)
strFirst = Trim(objExcel.Cells(intRow, 3).Value)
strinitials = Trim(objExcel.Cells(intRow, 4).Value)
strLast = Trim(objExcel.Cells(intRow, 5).Value)
strPWD = Trim(objExcel.Cells(intRow, 6).Value)
stroffice = Trim(objExcel.Cells(intRow, 7).Value)
strmail = Trim(objExcel.Cells(intRow, 8).Value)
strprincipalname = strSam & “@teste.interno”
strtitle = Trim(objExcel.Cells(intRow, 9).Value)
strdepartment = Trim(objExcel.Cells(intRow, 10).Value)
strdescription = Trim(objExcel.Cells(intRow, 11).Value)
strtelephoneNumber = Trim(objExcel.Cells(intRow, 12).Value)
‘ strcompany = “Infracommerce”
‘ Build the actual User from data in strSheet.
Set objUser = objContainer.Create(“User”, “cn=” & strCN)
objUser.sAMAccountName = strSam
objUser.givenName = strFirst
objUser.initials = strinitials
objUser.sn = strLast
‘ objUser.SetInfo
objUser.physicalDeliveryOfficeName = stroffice
objUser.mail = strmail
objUser.userPrincipalName= strprincipalname
objUser.displayName = strCN
objUser.title = strtitle
objUser.department = strdepartment
‘ objUser.company = strcompany
objUser.description = strdescription
objUser.telephoneNumber = strtelephoneNumber
‘ Separate section to enable account with its password
objUser.userAccountControl = 512
objUser.pwdLastSet = 0
objUser.SetPassword strPWD
objUser.SetInfo
intRow = intRow + 1
Loop
objExcel.Quit
strTitulo = “COMANDO CONCLUIDO!!”
strMensagem = _
“USUARIO(S) CRIADO(S) COM SUCESSO!” & vbcrlf & vbcrlf & _
” Mova para OU correta e crie a mailbox.” & vbcrlf & _
“” & vbcrlf & _
“”
‘BtnCode = WshShell.Popup(strMensagem, 5, “Informação:”, 64 + 0)
msgbox strMensagem, 0 + 64, strTitulo
WScript.Quit
Rafael, provavelmente é o password que você está colocando na planilha.
Ai no seu script, altere também para o seu dominio, na seguinte linha:
strprincipalname = strSam & “@teste.interno”
Alterei o nivel de senha no AD e mudei também o password e nada
Apresenta erro agora na linha 47
objUser.SetInfo
obs.: tirei a aspa simples que estava na >> ‘ strcompany = xxxx
Gustavo Valle, agora está tudo certo.
O problema era com a planilha que continha um usuário excedendo a quantidade de carácter permitida.
Obrigado.
Rafael como voce arrumou? estou com o mesmo problema da linha 47 e 61. Fiz o teste de deixar uma celula na planilha e deu o mesmo problema na 61. Poderia me ajudar? Gustavo, se voce puder me ajudar tambem, ficaria muito agradecido.
Estou com o mesmo erro na linha objUser.SetPassword strPWD
* A complexibilidade de senha está desativada
* o número de caracteres do usuário não está excedendo
Alguem poderia ajudar?
scriot : c:\Script\ADD_User.vbs
Line: 61
char: 1
error: There is no such object on the server.
code: 80072030
source: Active Directory
está dando este erro alguém pode me ajudar??
‘———————————————————————-‘
‘————————–Criação de login—————————-‘
‘———————————————————————-‘
Option Explicit
Dim objRootLDAP, objContainer, objUser, objShell
Dim objExcel, objSpread, intRow
Dim strUser, strOU, strSheet
Dim strCN, strSam, strFirst, strLast, strPWD, strinitials, stroffice, strmail, strtitle, strdepartment, strprincipalname, strTitulo, strMensagem, strcompany, strdescription, strtelephoneNumber
strOU = “OU=Matriz ,”
strSheet = “C:\scripts\User.xls”
‘ Bind to Active Directory, Users container.
Set objRootLDAP = GetObject(“LDAP://rootDSE”)
Set objContainer = GetObject(“LDAP://” & strOU & objRootLDAP.Get(“defaultNamingContext”))
‘ Open the Excel spreadsheet
Set objExcel = CreateObject(“Excel.Application”)
Set objSpread = objExcel.Workbooks.Open(strSheet)
intRow = 3 ‘Row 1 often contains headings
‘ Here is the ‘DO…Loop’ that cycles through the cells
‘ Note intRow, x must correspond to the column in strSheet
Do Until objExcel.Cells(intRow,1).Value = “”
strSam = Trim(objExcel.Cells(intRow, 1).Value)
strCN = Trim(objExcel.Cells(intRow, 2).Value)
strFirst = Trim(objExcel.Cells(intRow, 3).Value)
strinitials = Trim(objExcel.Cells(intRow, 4).Value)
strLast = Trim(objExcel.Cells(intRow, 5).Value)
strPWD = Trim(objExcel.Cells(intRow, 6).Value)
stroffice = Trim(objExcel.Cells(intRow, 7).Value)
strmail = Trim(objExcel.Cells(intRow, 8).Value)
strprincipalname = strSam & “@sabin.com”
strtitle = Trim(objExcel.Cells(intRow, 9).Value)
strdepartment = Trim(objExcel.Cells(intRow, 10).Value)
strdescription = Trim(objExcel.Cells(intRow, 11).Value)
strtelephoneNumber = Trim(objExcel.Cells(intRow, 12).Value)
strcompany = “Sabin clinica médica”
‘ Build the actual User from data in strSheet.
Set objUser = objContainer.Create(“User”, “cn=” & strCN)
objUser.sAMAccountName = strSam
objUser.givenName = strFirst
objUser.initials = strinitials
objUser.sn = strLast
‘ objUser.SetInfo
objUser.physicalDeliveryOfficeName = stroffice
objUser.mail = strmail
objUser.userPrincipalName= strprincipalname
objUser.displayName = strCN
objUser.title = strtitle
objUser.department = strdepartment
objUser.company = strcompany
objUser.description = strdescription
objUser.telephoneNumber = strtelephoneNumber
‘ Separate section to enable account with its password
objUser.userAccountControl = 512
objUser.pwdLastSet = 0
objUser.SetPassword strPWD
‘ objUser.SetInfo
intRow = intRow + 1
Loop
objExcel.Quit
strTitulo = “COMANDO CONCLUIDO!!”
strMensagem = _
“USUARIO(S) CRIADO(S) COM SUCESSO!” & vbcrlf & vbcrlf & _
” Mova para OU correta e crie a mailbox.” & vbcrlf & _
“” & vbcrlf & _
“”
‘BtnCode = WshShell.Popup(strMensagem, 5, “Informação:”, 64 + 0)
msgbox strMensagem, 0 + 64, strTitulo
WScript.Quit
Ótimo script, porém preciso colocar também o script de logon e a pasta base (ex: P: \\servidor\users\login_usuario como ficaria?
Só adicionar no script e na platilha, as variáveis strprofilePath e strscriptPath
Lembre-se, sempre seguindo a ordem das variáveis no script com a coluna na planilha (= os já existentes no exemplo acima).
Ref: https://grvalle.com/2013/01/16/atributos-do-ad-win-2008/
Active Directory (64, 5) : A sintaxe de atributo especificada para o serviço de diretório é inválida.
Erro na linha objUser.SetInfo
tem hora que funciona e tem hora que dá este erro, o que pode ser?
funcionou, agora estou preciso também o caminho do perfil de TS e aba conectar-se P: \\servidor\profile$\usuario do TS
Tentei as flags strCtxWFProfilePath, strCtxCfgFlags1, strCtxWFHomeDir mas nao funcionou. Assim como a aba MemberOF para adicionar grupo
Gustavo, primeiramente obrigado por compartilhar seus conhecimentos. Tenho uma pergunta, é possível adicionar no script a variável “Member Of”? Preciso criar uma relação de usuários e adicioná-los em alguns grupos. Fico no aguardo muito obrigado.
Assim como o Jair, também gostaria de saber como adicionar o campo Member OF, uma vez que sou leiga no assunto
Gustavo,
Boa tarde!
Muito boa essa dica estou implantando aqui vários usuários. Porém estou enfrentando alguns problemas com usuário já cadastrados, dai o script para e tenho que editar o arquivo novamente. Tem como o script verificar o usuário se esta ou não no domínio e me reportar quais não foram adicionados devido já existir?
boa tarde…to com problema nessa linha: Set objContainer = GetObject(“LDAP://” & strOU & objRootLDAP.Get(“defaultNamingContext”))
alguem saberia resolver e dizer oq ocorre pra dar esse erro?
pra mim tambem aparece o erro nesta linha.
alguem ai conseguiu resolver?
Bom Artigo, fiz o teste usando o Windows Server 2012 Standard e ficou show de bola.
Uma duvida:
Quando setamos o homeDrive e o homeDirectory direto no Servidor e colocamos no
homeDirectory \\servidor\pastabase\%username% ele cria no compartilhamento uma pasta com o nome direto do usuario. Porem com o script isso é possivel fazer?
Grato,
Ótimo artigo, foi de grande ajuda, mas como faço para criar a pasta no compartilhamento com o nome do usuário usando o script?
Olá Gustavo meu nome é Leandro e gostaria que vc me tirasse algumas duvidas.
1º criei uma planilha conforme vc criou, a minha pergunta é, esse comando ou script e digito no excel ou em prompt de comando ou powershell?
2º que comando que eu vou utilizar?
Grato e aguardo resposta.
Leandro, é um script VBS.
Você pode executar o script (“arquivo”) pelo prompt mesmo.
Gustavo, boa tarde!
Valeu, funcionou redondinho. Criei 50 usuários todos no local certo. Criei 6 scripts diferentes, uma para cada OU e deu certinho.
Brigadão e parabéns pelo tutorial e blog.
Qual script que você está utilizando para fazer a migração.
Estou com erro na lina 42.
mas se altero o arquivo .xls pra ficar com uma linha não apresenta o erro, mas não cria os usuarios.
Obs.tive que remover a linha 16
Liha 16 -> Set objContainer = GetObject(“LDAP://” & strOU & objRootLDAP.Get(“defaultNamingContext”))
‘———————————————————————-‘
‘————————–Criação de login—————————-‘
‘———————————————————————-‘
Option Explicit
Dim objRootLDAP, objContainer, objUser, objShell
Dim objExcel, objSpread, intRow
Dim strUser, strOU, strSheet
Dim strCN, strSam, strFirst, strLast, strPWD, strinitials, stroffice, strmail, strtitle, strdepartment, strprincipalname, strTitulo, strMensagem, strcompany, strdescription, strtelephoneNumber
strOU = “OU=AUTOREDE ,”
strSheet = “C:\Users\Administrador\Downloads\Users.xls”
‘ Bind to Active Directory, Users container.
Set objRootLDAP = GetObject(“LDAP://rootDSE”)
‘ Open the Excel spreadsheet
Set objExcel = CreateObject(“Excel.Application”)
Set objSpread = objExcel.Workbooks.Open(strSheet)
intRow = 3 ‘Row 1 often contains headings
‘ Here is the ‘DO…Loop’ that cycles through the cells
‘ Note intRow, x must correspond to the column in strSheet
Do Until objExcel.Cells(intRow,1).Value = “”
strSam = Trim(objExcel.Cells(intRow, 1).Value)
strCN = Trim(objExcel.Cells(intRow, 2).Value)
strFirst = Trim(objExcel.Cells(intRow, 3).Value)
strinitials = Trim(objExcel.Cells(intRow, 4).Value)
strLast = Trim(objExcel.Cells(intRow, 5).Value)
strPWD = Trim(objExcel.Cells(intRow, 6).Value)
stroffice = Trim(objExcel.Cells(intRow, 7).Value)
strmail = Trim(objExcel.Cells(intRow, 8).Value)
strprincipalname = strSam & “@autorede.local”
strtitle = Trim(objExcel.Cells(intRow, 9).Value)
strdepartment = Trim(objExcel.Cells(intRow, 10).Value)
strdescription = Trim(objExcel.Cells(intRow, 11).Value)
strtelephoneNumber = Trim(objExcel.Cells(intRow, 12).Value)
strcompany = “Grupo AutoRede”
‘ Build the actual User from data in strSheet.
Set objUser = objContainer.Create(“User”, “cn=” & strCN)
objUser.sAMAccountName = strSam
objUser.givenName = strFirst
objUser.initials = strinitials
objUser.sn = strLast
objUser.SetInfo
objUser.physicalDeliveryOfficeName = stroffice
objUser.mail = strmail
objUser.userPrincipalName= strprincipalname
objUser.displayName = strCN
objUser.title = strtitle
objUser.department = strdepartment
objUser.company = strcompany
objUser.description = strdescription
objUser.telephoneNumber = strtelephoneNumber
‘ Separate section to enable account with its password
objUser.userAccountControl = 512
objUser.pwdLastSet = 0
objUser.SetPassword strPWD
objUser.SetInfo
intRow = intRow + 1
Loop
objExcel.Quit
strTitulo = “COMANDO CONCLUIDO!!”
strMensagem = _
“USUARIO(S) CRIADO(S) COM SUCESSO!” & vbcrlf & vbcrlf & _
” Mova para OU correta e crie a mailbox.” & vbcrlf & _
“” & vbcrlf & _
“”
‘BtnCode = WshShell.Popup(strMensagem, 5, “Informação:”, 64 + 0)
msgbox strMensagem, 0 + 64, strTitulo
WScript.Quit
Alguem conseguiu resolver este problema? eu retiro a linha e outros erros aparecem
Perfeito!! Parabens pelo tutorial me ajudou muito!!!
estou com o seguinte erro Gustavo
Scritp : c:\scripts\ADD_User.vbs
Linha : 47
Caract : 1
Erro : O objeto já existe
Codigo : 80071392
Origem : Active directory
Conseguiu resolver esse problema ? estou com o mesmo,
Pessoal pode me ajudar, o meu esta dando erro na linha 39 – 1 (senha)
O usuário cria normalmente na OU, porém tenho que trocar a senha, pois caso contrário não consigo acessar a conta.
Olá Gustavo
Na aba Conta, no campo “Nome de logon do usuário” e “@dominio.local” ficam vázios…
tem alguma ideia sobre o motivo?
Estou com o seguinte problema, alguém pode ajudar ?
só consigo rodar o script
colocando aspas simples nesses dois comandos mas no final ele nao cria nenhum usuário.
‘objUser.SetPassword strPWD
‘objUser.SetInfo
acontece erros sempre nessas linas 47 e 62 que é ‘objUser.SetInfo
e na linha ‘objUser.SetPassword strPWD sem as aspas simples ele dá o erro.
pode ajudar Guilherme VALLE urgente plzzzzz ?????
‘———————————————————————-‘
‘————————–Criação de login—————————-‘
‘———————————————————————-‘
Option Explicit
Dim objRootLDAP, objContainer, objUser, objShell
Dim objExcel, objSpread, intRow
Dim strUser, strOU, strSheet
Dim strCN, strSam, strFirst, strLast, strPWD, strinitials, stroffice, strmail, strtitle, strdepartment, strprincipalname, strTitulo, strMensagem, strcompany, strdescription, strtelephoneNumber
strOU = “OU=CONTAS NOVAS ,”
strSheet = “C:\scripts\User.xls”
‘ Bind to Active Directory, Users container.
Set objRootLDAP = GetObject(“LDAP://rootDSE”)
Set objContainer = GetObject(“LDAP://” & strOU & objRootLDAP.Get(“defaultNamingContext”))
‘ Open the Excel spreadsheet
Set objExcel = CreateObject(“Excel.Application”)
Set objSpread = objExcel.Workbooks.Open(strSheet)
intRow = 3 ‘Row 1 often contains headings
‘ Here is the ‘DO…Loop’ that cycles through the cells
‘ Note intRow, x must correspond to the column in strSheet
Do Until objExcel.Cells(intRow,1).Value = “”
strSam = Trim(objExcel.Cells(intRow, 1).Value)
strCN = Trim(objExcel.Cells(intRow, 2).Value)
strFirst = Trim(objExcel.Cells(intRow, 3).Value)
strinitials = Trim(objExcel.Cells(intRow, 4).Value)
strLast = Trim(objExcel.Cells(intRow, 5).Value)
strPWD = Trim(objExcel.Cells(intRow, 6).Value)
stroffice = Trim(objExcel.Cells(intRow, 7).Value)
strmail = Trim(objExcel.Cells(intRow, 8).Value)
strprincipalname = strSam & “@sabinmtz.com”
strtitle = Trim(objExcel.Cells(intRow, 9).Value)
strdepartment = Trim(objExcel.Cells(intRow, 10).Value)
strdescription = Trim(objExcel.Cells(intRow, 11).Value)
strtelephoneNumber = Trim(objExcel.Cells(intRow, 12).Value)
strcompany = “Sabin tecnologia”
‘ Build the actual User from data in strSheet.
Set objUser = objContainer.Create(“User”, “cn=” & strCN)
objUser.sAMAccountName = strSam
objUser.givenName = strFirst
objUser.initials = strinitials
objUser.sn = strLast
‘objUser.SetInfo
objUser.physicalDeliveryOfficeName = stroffice
objUser.mail = strmail
objUser.userPrincipalName= strprincipalname
objUser.displayName = strCN
objUser.title = strtitle
objUser.department = strdepartment
objUser.company = strcompany
objUser.description = strdescription
objUser.telephoneNumber = strtelephoneNumber
‘ Separate section to enable account with its password
objUser.userAccountControl = 512
objUser.pwdLastSet = 0
‘objUser.SetPassword strPWD
‘objUser.SetInfo
intRow = intRow + 1
Loop
objExcel.Quit
strTitulo = “COMANDO CONCLUIDO!!”
strMensagem = _
“USUARIO(S) CRIADO(S) COM SUCESSO!” & vbcrlf & vbcrlf & _
” Mova para OU correta e crie a mailbox.” & vbcrlf & _
“” & vbcrlf & _
“”
‘BtnCode = WshShell.Popup(strMensagem, 5, “Informação:”, 64 + 0)
msgbox strMensagem, 0 + 64, strTitulo
WScript.Quit
complementando. Criei uma OU como mesmo nome que tem o seu arquivo para não ter problemas mas mesmo assim continua dando esse erro, segue o meu script criado…
Como conseguiu resolver cara? Estou com o mesmo problema..
Dyogo, você conseguiu resolver? Estou com o mesmo problema…
Obrigado, esta de parabéns muito bom.
como consigo inserir informação da aba Editor de atributos campo: proxyAddresses com este script é possível ?
É… ainda dá erro no objUser.SetPassword strPWD e no objUser.SetInfo
Ola Jumesys a questão do strpwd tem que seguir a politica de senhas tipo 123edcv$ numero letra e um caracter especial você colocando uma senha na planilha deste tipo vai funcionar normalmente
Excelente tutorial me livrou de MUITO trabalho de formiga , a de parabéns amigo, tive algumas duvidas e dificuldades ao longo do processo (incluindo o caso dos erros de caractere inválido) mais e só recolocar as aspas duplas e simples que tudo fica normal. vlw
Caríssimo Gustavo
Antes de mas obrigado pelo teu tutorial, foi perfeito, Agora é possível eliminar e actualizar a partir de um determinado scripts Help me please.
Bom dia, como faço para verificar se o usuário já existe? Tenho alguns usuários que já existe e recebo lista em lote, ai tenho que ficar criando e verificando.
Gustavo obrigado por compartilhar bons conteúdos.
Meu problema reside no seguinte erro:
Linha: 19
Caract.: 1
Erro: O componente do ActiveX não pode criar Objeto: ‘Excel.Application’
Código: 800A01AD
Você sabe me dizer se preciso ter o Microsoft Excel instalado no meu AD se eu for rodar esse script dentro do AD e não usando um outro Windows com acesso ao Active Directory?
Obrigado
Estou com erro na linha 47 e 61
‘objUser.SetPassword strPWD
‘objUser.SetInfo
Me ajudem!
Galera, Bom dia!
Estou precisando de uma ajuda, alguém sabe em que parte do script desabilito a troca obrigatória da senha, pois não quero que os usuários tenham que troca-la.
salve pessoal.
fiz um tratamento de erros no script que direciona os usuarios com erro pra um arquivo texto, colem esse bloco depois da linha
intRow = intRow +1
If Err.Number 0 Then
‘dim strpenis = “teste”
Dim fileout
Dim fso
Set fso = CreateObject(“Scripting.FileSystemObject”)
Set fileout = fso.OpenTextFile(“C:\erros.txt”, 8)
fileout.WriteLine strSam & “, ” & Err.Number
fileout.Close
Err.Clear
End if
e adicionem um On error resume next
na segunda linha do arquivo vbs.
O meu esta dando erro na linha 7 e no caracter 9, alguem consegue me ajudar?