Automatizar a Criação de Usuários no Active Directory com New-ADUser

Você está cansado de abrir o Active Directory (AD) Users and Computers (ADUC), clicar por aí, cometer erros de digitação e passar pelo processo de criar uma nova conta de usuário pela sexta vez hoje? Se sim, você precisa automatizar o processo tão comum de usar o Active Directory para adicionar um usuário com o PowerShell usando o cmdlet New-ADUser!

É sexta-feira à noite, uma hora antes de você planejar ir para casa no fim de semana. Foi uma semana agitada, então você decidiu fazer planos para assistir ao grande jogo com seus amigos mais próximos. Mas, seu chefe casualmente se aproxima e pergunta: “Você viu o e-mail? Consegue lidar com isso até o final do dia?” Você rapidamente abre o Microsoft Outlook e, com certeza, é um e-mail do departamento de RH, com você cc’d por seu gerente, pedindo para provisionar 400 novas contas de funcionários no Active Directory (AD) antes de sair do escritório. Ótimo. Lá se vai o jogo.

Você rapidamente procura na Internet por algumas opções para acelerar a criação dessas contas de usuário e descobre que pode automatizar o provisionamento de contas AD usando a linha de comando e um cmdlet do PowerShell chamado New-ADUser.

Normalmente, os administradores criam manualmente contas AD usando o Active Directory Users and Computers snap-in MMC instalado no seu computador desktop instalado via Remote Server Administration Tools (RSAT). Mas criar um usuário AD dessa maneira leva, em média, três minutos por conta de usuário. Criar contas de usuário AD não é um trabalho glamoroso e está pronto para automação.

Há três maneiras comuns de os administradores criarem objetos de contas de usuário AD usando o cmdlet New-AdUser.

  1. Adicione uma conta de usuário do Active Directory usando os parâmetros obrigatórios e adicionais.
  2. Copie um objeto de usuário do AD existente para criar uma nova conta usando o parâmetro Instance.
  3. Combine o cmdlet Import-Csv com o cmdlet New-ADUser para criar vários objetos de usuário do Active Directory usando um arquivo de valores separados por vírgula (CSV).

Essas práticas às vezes podem ser combinadas para criar uma solução mais eficiente. Por exemplo, você pode usar todas as três opções para criar uma conta AD modelo que pode ser copiada usando um arquivo CSV para gerar várias novas contas AD.

Neste artigo, você aprenderá como usar New-AdUser aproveitando cada um desses métodos.

Gerencie e Relate o Active Directory, Exchange e Microsoft 365 com o ManageEngine ADManager Plus. Faça o Download do Teste Gratuito!

Pré-requisitos/Requisitos

Antes de começar a usar o cmdlet New-AdUser, você primeiro precisará garantir que atenda a alguns pré-requisitos.

Uma vez que você cumpra esses requisitos, está pronto para começar!

Criando uma única conta de usuário usando o cmdlet New-ADUser

Vamos primeiro criar uma única conta de usuário para demonstrar como o New-ADUser funciona em um nível básico. Você verá que o New-ADUser não tem muitos parâmetros obrigatórios. Na verdade, o único parâmetro obrigatório é o parâmetro Name, mas raramente é usado sozinho.

Geralmente, você usará muitos parâmetros diferentes para criar uma conta de usuário. Felizmente, a maioria dos parâmetros é autoexplicativa e corresponde bem ao que você vê no ADUC. Você pode ver no exemplo abaixo que é possível usar facilmente muitos parâmetros. Cada parâmetro corresponde aproximadamente a um único atributo da conta de usuário.

Observe que estamos usando acentos graves no exemplo. Isso é apenas para evitar uma linha longa única para fins de legibilidade.

PS51> New-ADUser `
    -Name "Kevin Sapp" `
    -GivenName "Kevin" `
    -Surname "Sapp" `
    -SamAccountName "kesapp-test" `
    -AccountPassword (Read-Host -AsSecureString "Input User Password") `
    -ChangePasswordAtLogon $True `
    -Company "Code Duet" `
    -Title "CEO" `
    -State "California" `
    -City "San Francisco" `
    -Description "Test Account Creation" `
    -EmployeeNumber "45" `
    -Department "Engineering" `
    -DisplayName "Kevin Sapp (Test)" `
    -Country "us" `
    -PostalCode "940001" `
    -Enabled $True

A unidade organizacional (OU) onde o objeto de usuário do AD está contido não pode ter um SamAccountName duplicado.

Agora que a conta está criada, confirme se a conta foi criada usando o cmdlet Get-ADUser. Abaixo você pode ver que Get-AdUser retorna alguns atributos comuns para a conta de usuário acabada de criar.

PS51> Get-ADUser -Identity kesapp-test -Properties State,Department,Country,City

DistinguishedName : CN=Kevin Sapp,CN=Users,DC=mylab,DC=local
Enabled           : True
GivenName         : Kevin
Name              : Kevin Sapp
ObjectClass       : user
ObjectGUID        : 3b18338d-b3c7-4d00-a54a-1d3121e1363f
SamAccountName    : kesapp-test
SID               : S-1-5-21-1181311581-1397355964-1468337501-1109
Surname           : Sapp
UserPrincipalName : kesapp-test@mylab.local

Copiando um Objeto de Usuário AD Existente

Outro método para a criação de contas é copiar um objeto de usuário AD existente e usá-lo como modelo para uma nova conta AD. Existem vários benefícios neste abordagem:

  • Isso economiza o tempo de ter que especificar cada parâmetro individualmente
  • Isso ajuda a padronizar a criação de contas AD
  • Isso previne erros humanos causados pela criação manual de contas e permite que funcionários da mesma equipe tenham os mesmos atributos AD personalizados

Para este exemplo, você usará a conta acabada de criar como um modelo (kesapp-test). Talvez você precise criar uma nova conta de usuário com os mesmos atributos AD de estado, localização, departamento, país e cidade. Esta nova conta será para o funcionário James Brown.

Observe que há uma limitação com esta abordagem e apenas as seguintes propriedades de conta AD listadas no link abaixo podem ser copiadas com este processo. Para mais informações, consulte a página de documentos da Microsoft Copiar as Propriedades de um Usuário.

O primeiro passo é encontrar a conta de usuário AD que será usada como modelo, garantindo que todos os atributos a serem copiados sejam fornecidos através do parâmetro Properties. Para fazer isso, use o cmdlet Get-ADUser conforme mostrado abaixo. Isso simplesmente armazena o objeto de usuário AD na variável $template_account.

Observe que a segunda linha está definindo a propriedade UserPrincipalName (UPN) do objeto modelo como $null. Isso é recomendado para garantir que o UPN do modelo seja único. Cada conta de usuário AD deve ter um UPN único.

$template_account = Get-ADUser -Identity kesapp-test -Properties State,Department,Country,City
$template_account.UserPrincipalName = $null

Depois de capturar a conta de usuário modelo, você pode usar esse objeto como valor para o parâmetro Instance e fornecer quaisquer parâmetros específicos do usuário para preencher os outros atributos conforme mostrado abaixo.

New-ADUser `
    -Instance $template_account `
    -Name 'James Brown' `
    -SamAccountName 'jbrown' `
    -AccountPassword (Read-Host -AsSecureString "Input User Password") `
    -Enabled $True

Agora você deve ter uma conta para James com todos os atributos AD permitidos trazidos pelo objeto modelo.

Armadilhas do Modelo de Conta de Usuário

Um erro comum com esta abordagem é usar o caractere * como coringa para o parâmetro Properties ao capturar o objeto modelo. Os administradores fazem isso porque desejam copiar todos os atributos da conta de usuário de uma vez. Mas isso não funciona.

Por exemplo, o comando abaixo resultará em um erro:

$template_account = Get-ADUser -Identity kesapp-test -Properties *
New-ADUser `
    -Instance $template_account `
    -Name 'James Brown' `
    -SamAccountName 'jbrown' `
    -UserPrincipalName '[email protected]' `
    -AccountPassword (Read-Host -AsSecureString "Input User Password") `
    -Enabled $True

O problema com esta abordagem é que o atributo UserPrincipalName precisa ser único em todo o AD Forest. Portanto, o UPN deve ser sobrescrito no comando New-ADUser ou definido como nulo na variável de modelo (mostrada abaixo).

$template_account.UserPrincipalName = $null

Outra razão pela qual a abordagem de curinga falha é que algumas das propriedades do AD que estão sendo copiadas pelo curinga são somente leitura (pertencentes ao Security Account Manager).

Permission error when copying AD objects

Criando Novas Contas de Usuário com um Arquivo CSV

Levando o que você aprendeu um passo adiante é ler contas de funcionários de um arquivo CSV e usar o New-ADUser para criar contas de usuário AD.

Essa solução é frequentemente utilizada por muitas organizações para automatizar a criação de contas em conjunto com sistemas de RH que criam arquivos planos com informações de integração de novos funcionários.

Vamos dizer que você recebeu uma lista de novos funcionários em um arquivo CSV. Cada linha no arquivo CSV representa um único registro e possui as seguintes colunas: FirstName, LastName, Department, State, EmployeeID e Office. A convenção de nomenclatura para a conta de login do usuário é a inicial do primeiro nome do funcionário concatenada com o sobrenome, como por exemplo ksapp para o funcionário Kevin Sapp.

FirstName, LastName, Department, State, EmployeeID, Office, UserPrincipalName, SamAccountName, Password
Micheal, Jordan, NBA, Chicago, 23, Chicago Bulls, mjordan@mylab.local, mjordan, p@ssw0rd1
Lebron, James, NBA, Los Angeles,24, LA Lakers,ljames@mylab.local, ljames, p@ssw0rd2
Dwayne, Wade, NBA, Miami, 13, Miami Heat, dwade@mylab.local, dwade, p@ssw0rd3
$import_users = Import-Csv -Path sample.csv

Assim que você tiver o arquivo CSV, use o Import-Csv para ler o arquivo CSV e capturar cada linha como um único objeto. Em seguida, itere sobre cada uma dessas linhas passando os campos apropriados do arquivo CSV para os parâmetros esperados do New-ADUser. Você pode ver um exemplo disso abaixo.

$import_users | ForEach-Object {
    New-ADUser `
        -Name $($_.FirstName + " " + $_.LastName) `
        -GivenName $_.FirstName `
        -Surname $_.LastName `
        -Department $_.Department `
        -State $_.State `
        -EmployeeID $_.EmployeeID `
        -DisplayName $($_.FirstName + " " + $_.LastName) `
        -Office $_.Office `
        -UserPrincipalName $_.UserPrincipalName `
        -SamAccountName $_.SamAccountName `
        -AccountPassword $(ConvertTo-SecureString $_.Password -AsPlainText -Force) `
        -Enabled $True
}

Gerencie e Relate o Active Directory, Exchange e Microsoft 365 com o ManageEngine ADManager Plus. Baixe a avaliação gratuita!

Resumo

Neste post, você aprendeu como provisionar novas contas de usuário usando três métodos diferentes:

  1. Criação de conta única
  2. Copiar uma conta de usuário de um modelo
  3. Criar várias contas usando um arquivo CSV

Essas são formas básicas de provisionar novos usuários em seu ambiente. Esses métodos funcionam muito bem quando agrupados criando uma função do PowerShell e um módulo. Você pode até levar as coisas um passo adiante e criar seu próprio processo de automação usando um banco de dados SQL ou Oracle como fonte (em vez de um arquivo CSV). Sinta-se à vontade para aproveitar cada método com base em seus próprios requisitos e casos de uso exclusivos.

Esperançosamente, estas informações vão te ajudar em momentos críticos! Você aprendeu uma nova habilidade e conseguiu ir à festa com seus amigos sem sacrificar seu equilíbrio entre trabalho e vida pessoal!

Leitura Adicional

Source:
https://adamtheautomator.com/new-aduser/