PESQUISAR

20 de agosto de 2014

Como criar vários usuários no Active Directory através de uma planilha do Excel

Active Directory

Quem trabalha com o Active Directory há um bom tempo, já deve ter passado (ou ainda passará) por pelo menos uma das seguintes situações:
  • Criação de um novo domínio Active Directory onde todas as contas de usuário deverão ser criadas a partir do zero.
  • Repentina solicitação para criação de dezenas, talvez centenas de contas de usuário com prazo tipo... "pra já".
  • Sabotagem que consistiu em algum mau elemento deletar todas as contas do AD.

Bom, independente da situação, em algum momento você poderá necessitar criar muitas contas de usuário

Recentemente projetei e "levantei" toda uma infraestrutura lógica de rede, o que incluiu criar mais de 500 contas do zero, visto tratar-se do surgimento de uma nova empresa.

Irei ensinar uma dica simples, sem a necessidade de executar comandos específicos. Tudo o que precisaremos é de um arquivo "xls" e de um script "vbs".

Primeiro passo: crie sua planilha de usuários

OBS 01: O presente tutorial foi executado com sucesso num ambiente real de produção com aproximadamente 500 contas de usuários criadas.

OBS 02: Você deverá instalar o Microsoft Excel em seu controlador de domínio.

OBS 03: Prefira gerar uma planilha no formato "xls" e não o "xlsx".

Para darmos início a nossa criação, iremos montar uma planilha de usuários com seus respectivos campos ou atributos.

Inicialmente, o grande macete é você conseguir junto ao departamento de Recursos Humanos da empresa uma planilha contendo dados de todos os colaboradores. Todo setor de RH possui uma planilha de tal tipo. Evidentemente o RH deletará as colunas confidenciais, como por exemplo a coluna "salário". Daí lhe encaminhará o arquivo necessário.

Com tal arquivo em mãos, basta copiar e colar os dados em sua planilha e depois fazer os ajustes necessários.

Após obter o arquivo, será "mais suave" montar sua planilha de usuários.

Note abaixo uma planilha de exemplo que montei:


Clique na imagem acima para ampliá-la

Na tela acima note que existem colunas com os nomes dos principais atributos de uma conta de usuário. Mas o grande segredo NÃO está no nome do atributo, mas SIM no número correspondente a cada atributo.

Veja na planilha que logo abaixo de "Login" existe o número "1", embaixo de "Nome Completo" existe o número "2" e assim sucessivamente até o número "11" que está abaixo de "Telefone".

O script que veremos a frente fará uso do número e não do atributo.

Então mãos a obra! Crie sua planilha de 11 colunas (1 coluna por atributo) evidentemente de 1 até 11.

De preferência, faça exatamente como consta na imagem acima a fim de evitar erros.

Script para criação de usuários em massa

Copie o script abaixo, abra um "Bloco de Notas", cole o script no arquivo e salve-o com a extensão ".vbs".

Segue script:



Option Explicit
Dim objRootLDAP, objContainer, objUser, objShell
Dim objExcel, objSpread, intRow
Dim strUser, strOU, strSheet
Dim strCN, strSam, strFirst, strLast, strPWD, stroffice, strmail, strtitle, strdepartment, strprincipalname, strTitulo, strMensagem, strcompany, strdescription, strtelephoneNumber


strOU = "OU=MIGRACAO,"
strSheet = "C:\AD\Usersbah.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)
strLast = Trim(objExcel.Cells(intRow, 4).Value)
strPWD = Trim(objExcel.Cells(intRow, 5).Value)
stroffice = Trim(objExcel.Cells(intRow, 6).Value)
strmail = Trim(objExcel.Cells(intRow, 7).Value)
strprincipalname = strSam & "@contoso.com"
strtitle = Trim(objExcel.Cells(intRow, 8).Value)
strdepartment = Trim(objExcel.Cells(intRow, 09).Value)
strdescription = Trim(objExcel.Cells(intRow, 10).Value)
strtelephoneNumber = Trim(objExcel.Cells(intRow, 11).Value)
strcompany = "Contoso Corporation"

' Build the actual User from data in strSheet.
Set objUser = objContainer.Create("User", "cn=" & strCN)
objUser.sAMAccountName = strSam
objUser.givenName = strFirst
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 = "CONCLUÍDO COM SUCESSO!"
strMensagem = _
"CONTAS DE USUARIO CRIADAS COM ÊXITO!" & vbcrlf & vbcrlf & _
" Não se esqueça de movê-las para a OU específica e em seguida criar suas respectivas mailboxes." & vbcrlf & _
"" & vbcrlf & _
""

'BtnCode = WshShell.Popup(strMensagem, 5, "Informação:", 64 + 0)
msgbox strMensagem, 0 + 64, strTitulo

WScript.Quit

Compreendendo o script




No bloco abaixo note que as variáveis em destaque são alguns atributos de uma conta padrão do Active Directory.

Dim strCN, strSam, strFirst, strLast, strPWD, stroffice, strmail, strtitle, strdepartment, strprincipalname, strTitulo, strMensagem, strcompany, strdescription, strtelephoneNumber

Estas mesmas variáveis constam no bloco abaixo, no entanto, seguidas por seu respectivo número que é referenciado/vinculado em sua planilha de contas e atributos de usuários:

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)
stroffice = Trim(objExcel.Cells(intRow, 6).Value)
strmail = Trim(objExcel.Cells(intRow, 7).Value)
strprincipalname = strSam & "@contoso.com"
strtitle = Trim(objExcel.Cells(intRow, 8).Value)
strdepartment = Trim(objExcel.Cells(intRow, 09).Value)
strdescription = Trim(objExcel.Cells(intRow, 10).Value)
strtelephoneNumber = Trim(objExcel.Cells(intRow, 11).Value)

O script entende que o valor "1" do script [strSam = Trim(objExcel.Cells(intRow, 1).Value)] refere-se à coluna "login" de sua planilha.

O valor "2" do script [strCN = Trim(objExcel.Cells(intRow, 2).Value)] se refere à coluna "Nome Completo" da sua planilha.

E assim sucessivamente. Cada variável está associada ao seu respectivo número que por sua vez está vinculado ao número existente em sua planilha.

Trechos importantes do script:

strprincipalname = strSam & "@contoso.com" ==> Aqui você preencherá o domínio da organização.

strcompany = "Contoso Corporation" ==> Percebe-se claramente que se refere ao nome de sua empresa.

strOU = "OU=MIGRACAO," ==> Se refere a OU que abrigará todas as contas criadas.

strSheet = "C:\AD\Usersbah.xls" ==> Se refere ao caminho onde a planilha se encontra. Neste exemplo, o arquivo "Usersbah.xls" foi criado para armazenar os usuários da filial Bahia e o mesmo está localizado em "C:\AD" no servidor.

Como executar o script

OBS. Se pelo menos um usuário existente em sua planilha já foi criado, se você executar o script, um erro será gerado e não será possível criar as contas até que você exclua tal usuário do AD.

No Windows Server 2008 R2 é necessário executar um prompt de comando como "Administrador".

Para tal faça:

1- Clique no menu Iniciar;

2- Digite "CMD"

3- Clique com o botão direito do mouse sobre CMD e em seguida clique em "Executar como Administrador"

4- Dentro do Prompt acesse o caminho do script e execute-o.

Clique na imagem acima para ampliá-la

No Windows Server 2012 os passos acima não são necessários.

Seguem abaixo os resultados:


Clique na imagem acima para ampliá-la


Clique na imagem acima para ampliá-la

Se após a criação das contas você desejar preencher mais um atributo que seja comum a todos os usuários, basta selecionar todas as contas, clicar com o botão direito do mouse em uma delas e em seguida clicar em "Propriedades". Marque o checkbox do atributo desejado e preencha-o. Finalmente clique em "Aplicar".

No exemplo abaixo eu preenchi o campo "Página da WEB".

Clique na imagem acima para ampliá-la

Clique na imagem acima para ampliá-la

Espero ter contribuído com mais estes conhecimentos.

Um abraço!

Este post lhe foi útil?
Então o curta no Facebook ou o recomende no Google+.
E não deixe de postar o seu comentário. Ele é muito importante!







Related Posts Plugin for WordPress, Blogger...

7 comentários :

  1. Aqui apresenta erro na linha abaixo:

    objUser.SetPassword strPWD

    Alguma idéia do que seja?

    Obs.: Já desativei a complexibilidade de senha

    ResponderExcluir
  2. Olá meu caro Paulo Cezar"

    Antes de qualquer coisa, vamos recapitular alguns trechos importantes:

    1 - Se pelo menos um usuário existente em sua planilha já foi criado, se você executar o script, um erro será gerado e não será possível criar as contas até que você exclua tal usuário do AD.

    2- Para executar o script "No Windows Server 2008 R2 é necessário executar um prompt de comando como "Administrador"."

    Aguardo seu breve retorno.

    Um abraço!

    ResponderExcluir
  3. Boa tarde senhores!
    Saberiam me dizer se existe algum script para inserir e-mail no campo conta de e-mail de usuários já existentes no AD?
    Preciso atualizar aproximadamente 1500 usários do AD de minha empresa e gostaria de automatizar tal processo.
    Agradeço desde já!

    ResponderExcluir
    Respostas
    1. Olá Guilherme!

      Possivelmente os comentários existentes no link abaixo possam ajudá-lo:

      https://social.technet.microsoft.com/Forums/pt-BR/d9b615ce-85db-4ccb-93ae-d5680355d90a/editar-usurio-no-ad-usando-script?forum=scriptadminpt

      Um abraço!

      Excluir
    2. A ferramenta gratuita "ADModify" poderá ser útil. Com ela você pode atualizar múltiplas contas de usuário ao mesmo tempo.

      Segue link:

      https://admodify.codeplex.com/releases/view/6065

      Abraço!

      Excluir
  4. Sabe me dizer o tempo medio para importar 300 contas?

    ResponderExcluir
    Respostas
    1. Olá meu caro!
      No último projeto que implementei eu usei o script para criar pouco mais de 300 contas e não me lembro de alguma demora considerável.
      Creio que você ficará satisfeito.
      Espero ter ajudado!
      Um abraço!

      Excluir

Nos comentários poderão existir informações que poderão lhe ajudar a resolver seu problema.