Remember to maintain security and privacy. Do not share sensitive information. Procedimento.com.br may make mistakes. Verify important information. Termo de Responsabilidade

Como Consultar Objetos no Active Directory via PowerShell

Este script em PowerShell fornece um menu interativo para realizar consultas detalhadas no Active Directory (AD). Ele permite visualizar informações sobre usuários, computadores e grupos, facilitando a administração e a auditoria do ambiente Windows Server.


Funcionalidades do Script



  • Consultar usuários detalhadamente (informações como nome, cargo, e-mail, status da conta, etc.).

  • Consultar computadores (hostname, sistema operacional, última autenticação, status, etc.).

  • Consultar grupos (lista de membros, tipo de grupo, escopo).

  • Listar usuários bloqueados, inativos ou nunca logados.

  • Exportar relatórios das consultas para CSV.


Pré-requisitos


1. Executar o script com permissões administrativas no PowerShell.
2. O módulo ActiveDirectory deve estar instalado:


   Install-WindowsFeature -Name "RSAT-AD-PowerShell"

3. Configurar o domínio e a Organizational Unit (OU) base no início do script ($domain e $baseOU).




Código do Script


# Certifique-se de salvar este arquivo com codificação UTF-8 com BOM
Import-Module ActiveDirectory

# Configuração do domínio e base OU
$domain = ""
$baseOU = ""

function Show-Menu {
Clear-Host
Write-Host "==============================================" -ForegroundColor Cyan
Write-Host " MENU DE CONSULTAS AD " -ForegroundColor Yellow
Write-Host "==============================================" -ForegroundColor Cyan
Write-Host " Domínio: $domain" -ForegroundColor Green
Write-Host "--------------------------------------------------------------"
Write-Host "1 - Consultar detalhes de um usuário" -ForegroundColor White
Write-Host "2 - Consultar detalhes de um computador" -ForegroundColor White
Write-Host "3 - Consultar detalhes de um grupo" -ForegroundColor White
Write-Host "4 - Listar usuários inativos" -ForegroundColor White
Write-Host "5 - Listar usuários bloqueados" -ForegroundColor White
Write-Host "6 - Listar usuários nunca autenticados" -ForegroundColor White
Write-Host "7 - Listar computadores nunca autenticados" -ForegroundColor White
Write-Host "8 - Exportar relatório de usuários" -ForegroundColor White
Write-Host "9 - Exportar relatório de computadores" -ForegroundColor White
Write-Host "10 - Exportar relatório de grupos" -ForegroundColor White
Write-Host "0 - Sair do script" -ForegroundColor Red
Write-Host "==============================================" -ForegroundColor Cyan
}

function Get-UserDetails {
$username = Read-Host "Digite o nome do usuário"
try {
$user = Get-ADUser -Identity $username -Properties * -ErrorAction Stop
Write-Host "`n===== Detalhes do Usuário =====" -ForegroundColor Cyan
Write-Host "Nome: $($user.Name)"
Write-Host "Login: $($user.SamAccountName)"
Write-Host "E-mail: $($user.EmailAddress)"
Write-Host "Cargo: $($user.Title)"
Write-Host "Departamento: $($user.Department)"
Write-Host "Status: $(if ($user.Enabled) {'Ativo'} else {'Inativo'})"
Write-Host "Último logon: $($user.LastLogonDate)"
Write-Host "Conta bloqueada: $(if ($user.LockoutTime -ne $null) {'Sim'} else {'Não'})"
} catch {
Write-Host "Erro ao buscar usuário: $_" -ForegroundColor Red
}
}

function Get-ComputerDetails {
$computername = Read-Host "Digite o nome do computador"
try {
$computer = Get-ADComputer -Identity $computername -Properties * -ErrorAction Stop
Write-Host "`n===== Detalhes do Computador =====" -ForegroundColor Cyan
Write-Host "Nome: $($computer.Name)"
Write-Host "Sistema Operacional: $($computer.OperatingSystem)"
Write-Host "Versão SO: $($computer.OperatingSystemVersion)"
Write-Host "Último logon: $($computer.LastLogonDate)"
Write-Host "Status: $(if ($computer.Enabled) {'Ativo'} else {'Inativo'})"
} catch {
Write-Host "Erro ao buscar computador: $_" -ForegroundColor Red
}
}

function Get-GroupDetails {
$groupname = Read-Host "Digite o nome do grupo"
try {
$group = Get-ADGroup -Identity $groupname -Properties * -ErrorAction Stop
$members = Get-ADGroupMember -Identity $groupname | Select-Object Name, SamAccountName
Write-Host "`n===== Detalhes do Grupo =====" -ForegroundColor Cyan
Write-Host "Nome: $($group.Name)"
Write-Host "Escopo: $($group.GroupScope)"
Write-Host "Categoria: $($group.GroupCategory)"
Write-Host "Membros:"
$members | Format-Table -AutoSize
} catch {
Write-Host "Erro ao buscar grupo: $_" -ForegroundColor Red
}
}

function Get-InactiveUsers {
Write-Host "`n===== Usuários Inativos =====" -ForegroundColor Cyan
Get-ADUser -Filter {Enabled -eq $false} | Select-Object Name, SamAccountName | Format-Table -AutoSize
}

function Get-LockedUsers {
Write-Host "`n===== Usuários Bloqueados =====" -ForegroundColor Cyan
Get-ADUser -Filter * -Properties LockoutTime | Where-Object { $_.LockoutTime -ne $null } |
Select-Object Name, SamAccountName | Format-Table -AutoSize
}

function Get-NeverLoggedUsers {
Write-Host "`n===== Usuários Nunca Autenticados =====" -ForegroundColor Cyan
Get-ADUser -Filter * -Properties LastLogonDate | Where-Object { $_.LastLogonDate -eq $null } |
Select-Object Name, SamAccountName | Format-Table -AutoSize
}

function Get-NeverLoggedComputers {
Write-Host "`n===== Computadores Nunca Autenticados =====" -ForegroundColor Cyan
Get-ADComputer -Filter * -Properties LastLogonDate | Where-Object { $_.LastLogonDate -eq $null } |
Select-Object Name | Format-Table -AutoSize
}

function Export-UserReport {
$outputFile = Read-Host "Digite o nome do arquivo de saída (ex: usuarios.csv)"
Get-ADUser -Filter * -Properties Name, SamAccountName, Enabled, LastLogonDate |
Export-Csv -Path $outputFile -NoTypeInformation
Write-Host "Relatório de usuários exportado para $outputFile." -ForegroundColor Green
}

function Export-ComputerReport {
$outputFile = Read-Host "Digite o nome do arquivo de saída (ex: computadores.csv)"
Get-ADComputer -Filter * -Properties Name, Enabled, LastLogonDate, OperatingSystem |
Export-Csv -Path $outputFile -NoTypeInformation
Write-Host "Relatório de computadores exportado para $outputFile." -ForegroundColor Green
}

function Export-GroupReport {
$outputFile = Read-Host "Digite o nome do arquivo de saída (ex: grupos.csv)"
Get-ADGroup -Filter * -Properties Name, GroupScope, GroupCategory |
Export-Csv -Path $outputFile -NoTypeInformation
Write-Host "Relatório de grupos exportado para $outputFile." -ForegroundColor Green
}

do {
Show-Menu
$input = Read-Host "Digite a opção desejada"
switch ($input) {
'1' { Get-UserDetails }
'2' { Get-ComputerDetails }
'3' { Get-GroupDetails }
'4' { Get-InactiveUsers }
'5' { Get-LockedUsers }
'6' { Get-NeverLoggedUsers }
'7' { Get-NeverLoggedComputers }
'8' { Export-UserReport }
'9' { Export-ComputerReport }
'10' { Export-GroupReport }
'0' { Write-Host "Saindo..." -ForegroundColor Red }
default { Write-Host "Opção inválida, tente novamente." -ForegroundColor Red }
}
if ($input -ne '0') { Read-Host "Pressione Enter para continuar" }
} until ($input -eq '0')

To share Download PDF

Gostou do artigo? Deixe sua avaliação!
Sua opinião é muito importante para nós. Clique em um dos botões abaixo para nos dizer o que achou deste conteúdo.