Como usar o PowerShell para administrar Active Directory
1. Introdução ao PowerShell para Active Directory
O módulo Active Directory para PowerShell (parte do RSAT-AD-PowerShell) é uma ferramenta essencial para administradores de rede que desejam automatizar tarefas de gerenciamento de diretório. Este módulo fornece centenas de cmdlets que permitem gerenciar usuários, grupos, computadores, unidades organizacionais e muito mais diretamente do terminal.
Pré-requisitos e instalação
Para utilizar o módulo, é necessário instalar as Ferramentas de Administração de Servidor Remoto (RSAT). No Windows Server, o recurso já está disponível; no Windows 10/11, deve ser instalado via:
Add-WindowsCapability -Name "Rsat.ActiveDirectory.DS-LDS.Tools~~~~0.0.1.0" -Online
Após a instalação, importe o módulo:
Import-Module ActiveDirectory
Para verificar se o módulo foi carregado corretamente:
Get-Command -Module ActiveDirectory | Measure-Object
Conexão ao domínio
O PowerShell para AD conecta-se automaticamente ao domínio do computador onde está sendo executado. Para especificar um controlador de domínio diferente ou usar credenciais alternativas:
Get-ADUser -Identity "joao.silva" -Server "dc01.empresa.local" -Credential (Get-Credential)
2. Gerenciamento de Usuários e Grupos
Criando usuários
O cmdlet New-ADUser permite criar contas com todas as propriedades necessárias:
New-ADUser -Name "Maria Oliveira" `
-GivenName "Maria" `
-Surname "Oliveira" `
-SamAccountName "maria.oliveira" `
-UserPrincipalName "maria.oliveira@empresa.local" `
-EmailAddress "maria.oliveira@empresa.com" `
-Path "OU=Funcionarios,DC=empresa,DC=local" `
-AccountPassword (ConvertTo-SecureString "Senha@2024" -AsPlainText -Force) `
-Enabled $true
Modificando e removendo usuários
# Alterar propriedades
Set-ADUser -Identity "maria.oliveira" -Department "TI" -Title "Analista"
# Desabilitar conta
Disable-ADAccount -Identity "joao.silva"
# Remover usuário
Remove-ADUser -Identity "usuario.inativo" -Confirm:$false
Gerenciamento de grupos
# Criar grupo de segurança
New-ADGroup -Name "GP_TI_Administradores" `
-GroupScope Global `
-GroupCategory Security `
-Path "OU=Grupos,DC=empresa,DC=local"
# Adicionar membros
Add-ADGroupMember -Identity "GP_TI_Administradores" -Members "maria.oliveira", "carlos.santos"
# Remover membro
Remove-ADGroupMember -Identity "GP_TI_Administradores" -Members "carlos.santos" -Confirm:$false
3. Consultas e Filtros no Active Directory
Buscando objetos
O Get-ADUser é o cmdlet mais versátil para consultas:
# Todos os usuários habilitados
Get-ADUser -Filter {Enabled -eq $true} -Properties Department, Title
# Usuários de um departamento específico
Get-ADUser -Filter "Department -eq 'TI'" -Properties *
# Busca por UPN
Get-ADUser -Filter "UserPrincipalName -like '*@empresa.local'"
Filtros LDAP avançados
Para consultas complexas, utilize -LDAPFilter:
# Usuários criados nos últimos 30 dias
Get-ADUser -LDAPFilter "(&(objectClass=user)(whenCreated>=20240101000000.0Z))"
# Contas desabilitadas com senha expirada
Get-ADUser -LDAPFilter "(&(objectClass=user)(userAccountControl:1.2.840.113556.1.4.803:=2)(pwdLastSet=0))"
Paginação e seleção de propriedades
# Paginação para grandes volumes
Get-ADUser -Filter * -Properties LastLogonDate -ResultPageSize 500 -ResultSetSize $null
# Selecionar propriedades específicas
Get-ADUser -Identity "maria.oliveira" -Properties "LastLogonDate", "PasswordLastSet", "LockedOut"
4. Gerenciamento de Unidades Organizacionais (OUs)
Criando e movendo OUs
# Criar OU com proteção contra exclusão
New-ADOrganizationalUnit -Name "SetorFinanceiro" `
-Path "DC=empresa,DC=local" `
-ProtectedFromAccidentalDeletion $true
# Mover objetos entre OUs
Get-ADUser -Filter "Department -eq 'Financeiro'" |
Move-ADObject -TargetPath "OU=SetorFinanceiro,DC=empresa,DC=local"
Estrutura hierárquica
# Criar hierarquia de OUs
New-ADOrganizationalUnit -Name "Brasil" -Path "DC=empresa,DC=local"
New-ADOrganizationalUnit -Name "SP" -Path "OU=Brasil,DC=empresa,DC=local"
New-ADOrganizationalUnit -Name "Usuarios" -Path "OU=SP,OU=Brasil,DC=empresa,DC=local"
5. Administração de Computadores e Dispositivos
Descoberta e gerenciamento
# Listar todos os computadores
Get-ADComputer -Filter * -Properties OperatingSystem, LastLogonDate
# Computadores com sistema operacional específico
Get-ADComputer -Filter "OperatingSystem -like '*Windows 10*'"
# Habilitar/Desabilitar conta de computador
Enable-ADAccount -Identity "PC-ADMIN-01$"
Disable-ADAccount -Identity "PC-DESATIVADO-01$"
Movendo computadores entre OUs
Get-ADComputer -Filter "Name -like 'PC-VENDAS*'" |
Move-ADObject -TargetPath "OU=ComputadoresVendas,OU=Vendas,DC=empresa,DC=local"
6. Automação de Tarefas Repetitivas com Scripts
Criação em lote a partir de CSV
Arquivo usuarios.csv:
Nome,Sobrenome,Departamento,Email
Ana,Costa,TI,ana.costa@empresa.com
Pedro,Alves,RH,pedro.alves@empresa.com
Script de importação:
Import-Csv "C:\Scripts\usuarios.csv" | ForEach-Object {
$nome = $_.Nome + "." + $_.Sobrenome
New-ADUser -Name "$($_.Nome) $($_.Sobrenome)" `
-GivenName $_.Nome `
-Surname $_.Sobrenome `
-SamAccountName $nome.ToLower() `
-UserPrincipalName "$($nome.ToLower())@empresa.local" `
-EmailAddress $_.Email `
-Department $_.Departamento `
-Path "OU=$($_.Departamento),DC=empresa,DC=local" `
-AccountPassword (ConvertTo-SecureString "Temp@123" -AsPlainText -Force) `
-Enabled $true `
-ChangePasswordAtLogon $true
}
Relatório de contas inativas
$diasInatividade = 90
$dataLimite = (Get-Date).AddDays(-$diasInatividade)
Get-ADUser -Filter {LastLogonDate -lt $dataLimite -and Enabled -eq $true} `
-Properties LastLogonDate, Name, SamAccountName |
Select-Object Name, SamAccountName, LastLogonDate |
Export-Csv "C:\Relatorios\contas_inativas.csv" -NoTypeInformation
7. Segurança e Permissões no Active Directory
Gerenciamento de permissões delegadas
$ouPath = "OU=SetorFinanceiro,DC=empresa,DC=local"
$grupo = "GP_Admin_Financeiro"
$direitos = [System.DirectoryServices.ActiveDirectoryRights] "CreateChild, DeleteChild, WriteProperty"
# Conceder permissão para gerenciar usuários na OU
Add-ADGroupMember -Identity "Domain Admins" -Members $grupo
Set-ADObject -Identity $ouPath -Add @{nTSecurityDescriptor=$direitos}
Auditoria de alterações
# Habilitar auditoria em uma OU
Set-ADOrganizationalUnit -Identity "OU=Usuarios,DC=empresa,DC=local" `
-AuditRule @{add="Success,Failure"}
# Verificar logs de auditoria (requer permissão de acesso ao log)
Get-WinEvent -LogName "Security" | Where-Object {$_.Id -eq 5136 -or $_.Id -eq 5137}
8. Troubleshooting e Dicas Avançadas
Erros comuns e soluções
# Verificar canal seguro com o domínio
Test-ComputerSecureChannel -Repair
# Testar conectividade com controlador de domínio
Test-Connection -ComputerName "dc01.empresa.local"
# Verificar replicação
repadmin /showrepl
Integração com outros módulos
# Combinar com módulo DHCP
Get-ADComputer -Filter "OperatingSystem -like '*Server*'" |
ForEach-Object { Get-DhcpServerv4Scope -ComputerName $_.Name }
# Combinar com módulo DNS
Get-ADComputer -Filter {Enabled -eq $true} |
ForEach-Object { Resolve-DnsName $_.Name -Type A }
Script de backup de objetos do AD
$backupPath = "C:\BackupAD\$(Get-Date -Format 'yyyyMMdd')"
New-Item -ItemType Directory -Path $backupPath -Force
# Exportar todos os usuários
Get-ADUser -Filter * -Properties * |
Export-Clixml -Path "$backupPath\usuarios.xml"
# Exportar grupos
Get-ADGroup -Filter * -Properties * |
Export-Clixml -Path "$backupPath\grupos.xml"
# Exportar OUs
Get-ADOrganizationalUnit -Filter * |
Export-Clixml -Path "$backupPath\ous.xml"
Referências
-
Documentação oficial do módulo Active Directory para PowerShell (Microsoft) — Documentação completa de todos os cmdlets do módulo Active Directory, com exemplos e parâmetros detalhados.
-
Instalação do RSAT no Windows 10/11 (Microsoft Learn) — Guia oficial para instalação das Ferramentas de Administração de Servidor Remoto, necessárias para usar o módulo AD.
-
PowerShell para administração de Active Directory: Guia Prático (4sysops) — Guia de referência rápida com os comandos mais utilizados para gerenciamento de AD no PowerShell.
-
Gerenciamento de usuários e grupos com PowerShell (Active Directory Pro) — Tutorial prático com exemplos reais de criação, modificação e remoção de usuários e grupos.
-
Automação de tarefas no AD com scripts PowerShell (ITPro Today) — Artigo abrangente sobre automação de tarefas repetitivas, incluindo criação em lote e relatórios.
-
Segurança e permissões no Active Directory com PowerShell (Petri) — Guia sobre gerenciamento de permissões delegadas, auditoria e boas práticas de segurança no AD.
-
Troubleshooting de replicação e conectividade no AD (Microsoft Docs) — Documentação oficial para resolução de problemas comuns de replicação e conectividade no Active Directory.