O seu portal de estudos

Criando usuários no Active Directory a partir de uma planilha do Excel

Posted by Carlos Lauff em 31 de agosto de 2011

Olá, pessoal…

Na semana passada mostrei como usar o comando DSADD para criar objetos no Active Directory. Existem várias formas de atingir esse objetivo, algumas documentadas oficialmente através dos comandos CSVDE e LDIFDE e outras que dependem da criatividade e conhecimento de outras ferramentas alheias ao Active Directory. Nenhuma delas faz mágica, você sempre terá um mínimo de trabalho.

Hoje vou mostrar uma técnica bastante útil que consiste em usar um script em Visual Basic para ler as propriedades LDAP do objeto user a partir de uma planilha em Excel.

Instruções para criar uma planilha com os dados do usuário

A planilha em si é simples, ainda mais quando usamos o poder das funções do Excel em nosso favor.

 

É interessante que você conheça os atributos LDAP que compõem o objeto user, aqui eu utilizei somente os básicos:

  • samAccountName representa o nome do usuário anterior ao Windows 2000.
  • CN representa o nome comum do objeto.
  • givenName representa o primeiro nome.
  • sn representa o sobrenome.
  • password representa a senha.

Cada usuário ocupa uma linha, por exemplo o usuário Carlos Lauff ocupa a linha 3 da planilha. E cada atributo do usuário ocupa sempre a mesma coluna, como  o CN que sempre estará na coluna B.

Os atributos samAccountName e CN são obrigatórios. Há ainda outro atributo obrigatório chamando objectClass, mas esse será passado ao Active Directory pelo código do scritp.

Na planilha você só precisa preencher os dados das colunas com os atributos givenName, sn e password. Você pode usar o poder das funções do Excel para criar automaticamente o valor de alguns atributos. Na minha planilha eu uso a função =ESQUERDA(C3;1)&D3 para que o atributo samAccountName seja composto pela primeira letra do primeiro nome seguido do sobrenome completo. O atributo CN também é preenchido automaticamente com a fórmula =C3&” ”&D3 que representa o Nome, um espaço e o sobrenome.

Os números presentes abaixo de cada atributo são unicamente para facilitar a referência das colunas quando o script em Visual Basic precisar localizá-las.

Salve a planilha com o nome de usuarios.xls.

Certo, a planilha está criada.

O Script que faz o “milagre”

Não vou detalhar tudo que o script faz, mas preste muita atenção nas linhas comentadas!

‘ criarUsuarios.vbs
‘ Exemplo para criar contas de usuário a partir de uma planilha em Excel
‘ Adaptado a partir do scritp escrito por Guy Thomas
‘ ——————————————————‘
Option Explicit
Dim objRootLDAP, objContainer, objUser, objShell
Dim objExcel, objSpread, intRow
Dim strUser, strOU, strSheet
Dim strCN, strSam, strFirst, strLast, strPWD
‘ ———————————————–‘
‘ Importante: altere “OU=” e “strSheet=” nas próximas duas linhas abaixo para adequar ao seu domínio e local onde a planilha está armazenada
‘ ———————————————–‘
strOU = "OU=Funcionarios ," ‘ Preste atenção na VÍRGULA antes de fechar as ASPAS
strSheet = "E:\scripts\Usuarios.xls"
‘ Conectando ao Active Directory.
Set objRootLDAP = GetObject("LDAP://rootDSE")
Set objContainer = GetObject("LDAP://" & strOU & _
objRootLDAP.Get("defaultNamingContext"))
‘ Abre a planilha do Excel
Set objExcel = CreateObject("Excel.Application")
Set objSpread = objExcel.Workbooks.Open(strSheet)
intRow = 3 ‘ Lendo a partir da linha 3, a linha 1 normalmente possui o cabeçalho das colunas
‘ Aqui está o ‘DO…Loop’ que percorre as células da planilha
‘ Note que intRow, x deve corrsponder à coluna na variável 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)
strLast = Trim(objExcel.Cells(intRow, 4).Value)
strPWD = Trim(objExcel.Cells(intRow, 5).Value)
‘ Cria o usuário a partir da variável strSheet.
Set objUser = objContainer.Create("User", "cn=" & strCN)
objUser.sAMAccountName = strSam
objUser.givenName = strFirst
objUser.sn = strLast
objUser.SetInfo
‘ Esta seção habilita a conta e sua senha
objUser.userAccountControl = 512
objUser.pwdLastSet = 0
objUser.SetPassword strPWD
objUser.SetInfo
intRow = intRow + 1
Loop
objExcel.Quit
WScript.Quit
‘ Fim do script

Lembre-se de salvar esse script com a extensão .VBS preferencialmente no local onde você armazenou a planilha para se manter organizado.

Abraços e até a próxima. Se você ainda não assinou nosso portal, essa é a hora! Siga-nos no Twitter @portalCooperati. Meu Twitter pessoal é @CalLauff.

Anúncios

8 Respostas to “Criando usuários no Active Directory a partir de uma planilha do Excel”

  1. Fico até tonto de olhar o script…
    Mas sei que um dia irei utilizar…

    Parabéns…

  2. Rafael Sanceverino Mattos said

    Muito bom esse artigo, vai ajudar muito aqui, estou com um projeto de aproximadamente 300 usuários. Minha pergunta: Tem como já criar os usuários já dentro de suas respectivas OU´s?
    Vlw! Grande abraço.
    Vou segui-lo no Twitter, o meu é @rafasanceverino.

    • Opa!

      Ter até tem. Mas teria que mexer substancialmente no script e criar mais uma coluna na planilha.

      O que sugiro por hora é criar os usuário agrupados pela mesma OU alterando somente a linha no script que indica essa OU.

      Abraços!

      • Rafael Sanceverino Mattos said

        Hummm…perfeito, vou fazer assim, já me resolve. Como disse, vai ajudar muito aqui.
        Um forte abraço amigo!

      • Rafael Sanceverino Mattos said

        Boa tarde Carlos.
        Testei o procedimento aqui em laboratótio e funcionou “lindamente”…rs. Muito bom mesmo.
        Vlw!!!

  3. Grande post Carlos, poderia criar um para a criação de OU`s.

  4. Carlos Jesus said

    Carlos, poderia me ajudar, preciso fazer um script para alterar alguns campos no AD, vc teria algo, como este tutorial que vc fez, esta excelente.
    Parabens.

    Carlos

    • CooperaTI em novo endereço

      Atenção aos que recebem essa mensagem e utilizam algum leitor de RSS ou estão apontando para o endereço: rafaelbernardes.wordpress.com ou rafaelbernardes.com.br.

      O CooperaTI está na nuvem da Amazon e talvez seja necessário que vocês atualizem seus leitores de RSS.

      Quem recebia as notificações de posts por email pode ficar tranquilo, a base anterior foi exportada para o novo portal.

      Novo endereço: http://www.cooperati.com.br

Deixe um comentário

Preencha os seus dados abaixo ou clique em um ícone para log in:

Logotipo do WordPress.com

Você está comentando utilizando sua conta WordPress.com. Sair / Alterar )

Imagem do Twitter

Você está comentando utilizando sua conta Twitter. Sair / Alterar )

Foto do Facebook

Você está comentando utilizando sua conta Facebook. Sair / Alterar )

Foto do Google+

Você está comentando utilizando sua conta Google+. Sair / Alterar )

Conectando a %s

 
%d blogueiros gostam disto: