2 # Manual de Uso: Script de Provisionamento de Usuários (cria-usuario-unico.ps1)
João Pedro Toledo Goncalves edited this page 2025-10-15 13:04:04 +00:00

1. Visão Geral

Este script é um componente central do Módulo 2: Portal do Gestor do projeto "Plataforma Unificada de Trabalho Digital". Sua principal função é automatizar o processo de criação de novos usuários de forma padronizada, completa e segura, interagindo com dois ambientes Active Directory distintos: o AD principal (cliente) e o AD do servidor de e-mails (Exchange).

O script foi projetado para ser executado sem interação manual e oferece as seguintes funcionalidades:

  • Suporte a mais de 25 atributos do Active Directory, cobrindo identidade, contato, organização e perfil.
  • Criação de usuário único através de parâmetros diretos ou criação em massa via importação de arquivo .csv.
  • Validações robustas e sequenciais para garantir a integridade dos dados antes da criação (parâmetros de conexão, campos críticos, unicidade de login/UPN, OU existente, etc.).
  • Geração de senha temporária segura para o novo usuário.
  • Logging detalhado de todas as ações, sucessos e falhas em um arquivo de texto local para fins de auditoria.

2. Pré-requisitos

Antes de executar o script, garanta que o ambiente atende aos seguintes requisitos:

  • PowerShell 5.1 ou superior.
  • Módulos do PowerShell:
    • ActiveDirectory: Deve estar instalado na máquina que executará o script (parte das Ferramentas de Administração de Servidor Remoto - RSAT).
    • Ferramentas de Gerenciamento do Exchange: Necessárias para o cmdlet Enable-Mailbox.
  • Permissões: A conta de serviço utilizada para executar o script (fornecida via Get-Credential) precisa de permissões no Active Directory para:
    • Ler as propriedades da floresta (Get-ADForest).
    • Criar e modificar objetos de usuário nas OUs de destino.
    • Habilitar caixas de correio no Exchange.
  • PowerShell Remoting (WinRM): Deve estar habilitado nos Domain Controllers para que o logging remoto no Windows Event Log funcione corretamente.

3. Estrutura do Arquivo CSV

Para a criação em massa, é necessário um arquivo .csv com uma estrutura específica. A primeira linha do arquivo deve ser o cabeçalho. O script é flexível: se uma coluna opcional não existir no seu CSV, ela será simplesmente ignorada.

3.1. Atributos Críticos Obrigatórios

Estes campos são exigidos pelo script para cada usuário. Se alguma dessas colunas estiver vazia em uma linha do CSV, essa linha será ignorada e um erro será registrado no log.

Cabeçalho Descrição Exemplo
SamAccountName O nome de logon do usuário (curto, pré-Windows 2000). Único na floresta. joao.silva
UserPrincipalName O logon principal do usuário (e-mail). Único na floresta. joao.silva@empresa.com.br
GivenName O primeiro nome do usuário. João
Surname O sobrenome do usuário. Silva
Name O nome completo de exibição do usuário. "João da Silva"
Path O Distinguished Name (DN) completo da OU onde a conta será criada. "OU=Funcionarios,OU=EmpresaX,DC=exch,DC=local"

3.2. Atributos Opcionais Suportados

As colunas a seguir são opcionais. Se a coluna não existir ou o valor estiver em branco, o script simplesmente não preencherá o campo correspondente no Active Directory.

Organização

Cabeçalho Descrição Exemplo
Title O cargo do usuário (ex: "Analista de Sistemas"). Analista Financeiro
Department O departamento do usuário (ex: "TI", "Financeiro"). Financeiro
Company O nome da empresa do usuário. Grupo Pralog
Manager O SamAccountName do gestor direto do usuário. O script irá procurar o DN dele. gestor.area
EmployeeID O número de matrícula (ID) único do colaborador, vindo do sistema de RH. 95481
EmployeeNumber O número funcional do colaborador. A-95481

Contato e Endereço

Cabeçalho Descrição Exemplo
OfficePhone O telefone comercial principal. +55 21 3344-5566
MobilePhone O telefone celular do usuário. +55 21 99999-8888
EmailAddress O endereço de e-mail de resposta principal. contato@empresa.com.br
StreetAddress O endereço (rua e número). Rua Principal, 123
City A cidade. Rio de Janeiro
State O estado ou província. RJ
PostalCode O código postal (CEP). 22000-000
Country O país (código de 2 letras, ex: 'BR'). BR

Perfil e Atributos Customizados

Cabeçalho Descrição Exemplo
Description Uma breve descrição sobre o usuário ou sua função. Analista responsável por contas a pagar.
Office O nome do escritório ou localidade física. Matriz RJ
HomePage A URL para a página pessoal ou perfil do LinkedIn do usuário. https://linkedin.com/in/joaosilva
ProxyAddresses E-mails secundários (aliases), separados por ponto-e-vírgula (;). alias1@empresa.com;alias2@empresa.com
extensionAttribute1 Atributo personalizado 1 (ex: Centro de Custo). FIN-RJ-01
extensionAttribute2 Atributo personalizado 2 (ex: ID de Projeto). PROJETO-X

Controle da Conta

Cabeçalho Descrição Exemplo (True ou False) / Data
PasswordNeverExpires Se True, a senha do usuário nunca expira. False
CannotChangePassword Se True, impede que o próprio usuário altere sua senha. False
AccountExpirationDate Define uma data para a conta ser desativada automaticamente (formato dd/MM/aaaa). 31/12/2025

3.3. Arquivo de Exemplo Completo: importacao_geral.csv

SamAccountName,UserPrincipalName,GivenName,Surname,Name,Path,Title,Department,Company,Manager,EmployeeID,EmployeeNumber,OfficePhone,MobilePhone,EmailAddress,StreetAddress,City,State,PostalCode,Country,Description,Office,HomePage,PasswordNeverExpires,CannotChangePassword,AccountExpirationDate,extensionAttribute1,extensionAttribute2,ProxyAddresses
ana.silva,ana.silva@grupopralog.com.br,Ana,Silva,"Ana Clara Silva","OU=Financeiro,OU=GrupoPralog,DC=exch,DC=local",Financeiro,"Analista Financeiro Sênior",Grupo Pralog,gestor.financeiro,10234,A-10234,"+55 21 3344-5566","+55 21 99999-8888",ana.silva@grupopralog.com.br,"Rua Principal, 123","Rio de Janeiro",RJ,"22000-000",BR,"Analista responsável pelas contas a pagar.","Rio de Janeiro","[https://portal.grupopralog.com.br](https://portal.grupopralog.com.br)",False,False,,"FIN-RJ-01","PROJETO-X","financeiro@grupopralog.com.br;contas.pagar@grupopralog.com.br"
bruno.temporario,bruno.temporario@enseg.com.br,Bruno,Costa,"Bruno Costa (Temp)","OU=Temporarios,OU=Enseg,DC=exch,DC=local",Operacional,"Técnico Temporário",Enseg,,T-90876,,,,,,"São Paulo",SP,"01000-000",BR,"Prestador de serviço para o projeto Y.",São Paulo,,False,True,"31/12/2025","OPE-SP-05",,""

4. Como Usar

4.1. Criação de Usuário Único

  1. Prepare as credenciais:
    $clientCred = Get-Credential
    $exchangeCred = Get-Credential
    
  2. Execute o script com os parâmetros:
    .\New-UnifiedADUser.ps1 -SamAccountName 'teste.user' -GivenName 'Usuario' -Surname 'Teste' -Name "Usuario Teste" -UserPrincipalName 'teste.user@itguys.com.br' -Path "OU=Usuarios,DC=exch,DC=local" -Title "Analista de Testes" -Department "QA" -OfficePhone "+55 11 5555-4444" -ClientADServer "192.168.1.10" -ClientADCredential $clientCred -ExchangeADServer "192.168.10.20" -ExchangeADCredential $exchangeCred
    

4.2. Criação em Massa via CSV

  1. Prepare as credenciais:
    $clientCred = Get-Credential
    $exchangeCred = Get-Credential
    
  2. Execute o script com o parâmetro -CsvPath:
    .\New-UnifiedADUser.ps1 -CsvPath "C:\caminho\para\importacao_geral.csv" -ClientADServer "192.168.1.10" -ClientADCredential $clientCred -ExchangeADServer "192.168.10.20" -ExchangeADCredential $exchangeCred
    

5. Validações, Logs e Tratamento de Erros

O script possui múltiplas camadas de validação para garantir a robustez do processo.

  • Validação de Conexão: O script falha imediatamente se os parâmetros de servidor ou credenciais estiverem vazios, evitando a execução parcial.
  • Validação de Dados por Usuário: Para cada linha do CSV (ou para o usuário único), o script verifica:
    • Se todos os 6 campos críticos obrigatórios estão preenchidos.
    • Se o SamAccountName e o UserPrincipalName propostos já não existem no Active Directory.
    • Se a Path (OU) de destino é válida e existe.
    • Se o sufixo do UserPrincipalName (domínio) é válido na floresta.
  • Logs: Todas as operações, sucessos, avisos (como um gestor não encontrado) e erros são gravados em um arquivo de log diário chamado New-UnifiedADUser-Log-AAAA-MM-DD.txt.

Se uma linha do CSV falhar em qualquer validação, um erro detalhado é logado, e o script continua para a próxima linha, garantindo que o processo em massa não seja interrompido.