Quanto tempo em média você gasta para popular seu Active Directory?
Criar OUs, Grupos e usuário é uma tarefa relativamente simples, mas que toma um belo tempo. Um cenário com 10, 20, 30 usuários até que vai cria manualmente, mas imagine ter de criar 500 usuários, 100 grupos e 125 OUs. Vai levar um bom tempo, né?! (estimo mais de 3h de trabalho).
Well, well…e se eu disser que existe a possibilidade de criar 500 usuários em 1~2 minutos?
Continue lendo e veja como criar 500 usuários em menos de 1 minuto. Aproveite se inscreva em meu Feed…sempre que tiver uma atualização por aqui você será informado.
Isso é possível com uso do nosso amigo PowerShell e é uma “técnica” (vamos chamar assim) chamada de “Bulk”. Basicamente nós fazemos o script powershell ler um arquivo csv ou txt e, baseado nas informações do arquivo, preencher os campos necessários para criar usuários, OUs e grupos. Depois que eu entendi como essa técnica funciona nunca mais criei usuários “na mão” (em grande quantidade, obviamente).
Vamos a prática.
O primeiro passo é criar uma base com as informações necessárias para criar o objeto do AD que deseja. Utilizarei como exemplo a criação de usuários. Eu criei uma planilha e dela exporto o arquivo csv. Dica: Não altere as colunas em vermelho, fiz algumas formulas pra ajudar na montagem do padrão de nome.
Depois da planilha preenchida, salve como CSV em um destino acessível (eu salvei no C: do AD). O arquivo csv ficará assim (logo depois que exportar o arquivo, abra-o e substitua “;” por “,” basta pressiona ctrl+H e pedir a substituição:
No controlador de domínio abra o PowerShell ISE. Esse carinha é uma espécie de IDE para o PowerShell.
Digite o seguinte comando:
Import-Csv “C:\usuariosAD.csv” | ForEach-Object {
New-ADUser -GivenName $_.PrimeiroNome -Surname $_.Sobrenome -Name $_.Exibicao -Path $_.Caminho -SamAccountName $_.SamAccountName -UserPrincipalName $_.UserPrincipalName -AccountPassword (ConvertTo-SecureString Teste@123. -AsPlainText -Force) -ChangePasswordAtLogon $true -Enabled $true -EmailAddress $_.”Email”
}
Para cada linha do arquivo ele executará o comando “New-ADUser” com os parâmetros Definidos. Para informar ao PS para ler um parâmetro baseado em uma linha da coluna “x” utilizamos o “$_.”Importa o arquivo “C\UsuariosAD.csv”Esse script faz o seguinte:
Cada parâmetro é alimentado pelas colunas do arquivo csv (vide imagem acima)
Ali na definição de senha, é necessário utilizar o comando “ConvertTo-SecureString” para que uma senha em texto plano seja aceita
O parâmetro “ChangePasswordAtLogon” força o usuário a alterar a senha no primeiro logon
Atenção especial ao parâmetro “Path”. Ele define onde os usuários devem ser criados. No meu exemplo, quero que todos sejam criados na OU TI, que está dentro da OU Departamentos, que está contida no domínio.
Nathan, calma…explica de novo! Para entender melhor como o caminho é definido olhe de trás pra frente (ou de cima pra baixo). Analise a imagem abaixo:
Se eu criasse uma OU chamada “SERVIDORES” dentro da OU TI, meu caminho ficaria “OU=SERVIDORES,OU=TI,OU=DEPARTAMENTOS,DC=NPINOTTI,DC=LOCAL”. Veja que eu apenas segui o caminho inverso (de baixo pra cima) e assim consegui definir o caminho tranquilamente.
A principio parece complexo, mas com a prática tudo fica mais fácil.
Prosseguindo.
Tenha muita atenção ao layout do arquivo csv. Bom, arquivo Bulk com os dados pronto, script pronto…basta pressionar F5 no PowerShell ISE e aguardar seus usuários serem criados. Eu consegui criar 500 usuários em cerca de 1~2 minutos. Esses foram meus resultados;
Show, né?!?! Veja que os campos foram preenchidos conforme solicitado. Se quiser, aqui tem uma lista dos parâmetros do “New-ADUser”.
Agora você está pensando…o titulo diz: “Populando o AD com PowerShell”. Está faltando OU e grupo. Right!
Para criar OUs e grupos via Powershell a ideia é a mesma, só precisamos ajustar o layout do arquivo csv e utilizar o CmdLet correto para isso. Veja abaixo.
Criar Grupos;
Import-Csv “C:\grupos.csv” | ForEach-Object {
New-ADGroup -Name $_.Nome -Path $_.Caminho -GroupScope $_.Escopo
}
-GrupoScope: Aqui você define se teu grupo será Global, Universal ou Domínio Local
Criar OUs;
Import-Module ActiveDirectory
Import-Csv “C:\usuarios.csv” | ForEach-Object {
New-ADOrganizationalUnit -Name $_.OU –path $_.Caminho
}
É isso ai…aqui funcionou 100%. E ai?
Se você curtiu o post, estou deixando os arquivos que utilizei disponível. Se for possível, se cadastre (fica ali do lado direito) e me ajude a manter o trabalho junto a comunidade técnica. Baixe os arquivos aqui.
Compartilhe a solução com seus amigos do facebook, acho que pode ajudar bastante gente.
Grande abraço!
Nathan, bom dia
Meu nobre, muito obrigado por dedicar o seu tempo escrevendo o artigo, pode corrigir os links das imagens do post para que a gente possa ter uma referência de montagem do .CSV.
Obrigado e bom trabalho.