Criar usuários no AD usando Planilha do Excel

É 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, 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 & “@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.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

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

75 thoughts on “Criar usuários no AD usando Planilha do Excel

  1. 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.

  2. 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?

      • 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!

  3. 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.

    • 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).

  4. 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,

  5. Gustavo, se por acaso eu deixar alguma linha ou coluna da tabela do excel em branco, dará algum tipo de erro?

  6. 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

  7. 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.

  8. Gustavo, parabéns pelo site.

    Teria alguma forma de criar os usuários e já adiciona-los em alguns grupos?

    Obg.

  9. 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.

  10. 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

  11. 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”

  12. 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

  13. 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

  14. Ótimo script, porém preciso colocar também o script de logon e a pasta base (ex: P: \\servidor\users\login_usuario como ficaria?

  15. 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

  16. 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.

  17. Assim como o Jair, também gostaria de saber como adicionar o campo Member OF, uma vez que sou leiga no assunto

  18. 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?

  19. 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?

  20. 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,

  21. Ó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?

  22. 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.

  23. 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.

  24. 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

  25. 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

  26. 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.

  27. 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?

  28. 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…

    • 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

  29. 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

  30. 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.

  31. 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

  32. 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.

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out /  Change )

Twitter picture

You are commenting using your Twitter account. Log Out /  Change )

Facebook photo

You are commenting using your Facebook account. Log Out /  Change )

Connecting to %s