PowerShell é cada vez mais a ferramenta de escolha para administradores do Windows. O módulo PowerShell do Active Directory inclui mais de 450 cmdlets que você pode usar para coletar informações sobre cada objeto no Active Directory, verificar a integridade dos controladores de domínio, coletar informações GPO e muito mais.
este artigo detalha como você pode usar o PowerShell para encontrar contas de usuário e computador desativadas e inativas em seus domínios do Active Directory.
pré-Requisitos
Para usar os scripts fornecidos aqui, você precisa:
- Instale o módulo PowerShell do Active Directory na máquina onde você executará o script. Esse computador deve estar executando o Windows Server 2012 ou posterior.
- abra a janela do PowerShell em um modo elevado.
- execute o script usando credenciais que têm permissão para acessar todos os domínios do Active Directory onde você está coletando dados.
verificar um único domínio
se você precisar verificar se um determinado usuário ou conta de computador está desativado ou inativo, você pode fazê-lo manualmente usando o snap-in usuários e computadores do Active Directory (ou ADUC). Se você precisar identificar contas desativadas e inativas em um domínio, no entanto, é melhor automatizar a tarefa usando o PowerShell.
por exemplo, para coletar contas de computador desabilitadas, você pode usar o cmdlet Get-ADComputer para procurar contas de computador que tenham a propriedade habilitada definida como $False, o que indica que a conta está desabilitada:
Get-ADComputer -Filter {(Enabled -eq $False)} -ResultPageSize 2000 -ResultSetSize $null -Server <AnyDomainController> -Properties Name, OperatingSystem
Aqui estão os scripts para tarefas relacionadas com a:
- Verifique se a uma única conta de usuário é desativada
- Obter uma lista de utilizadores com deficiência
- Localizar contas de computador inativo
- Localizar contas de usuários inativos
Verificar Em Vários Domínios
Se você deseja coletar informações de vários domínios do Active Directory, você precisa de um script PowerShell que pode fazer loop através de cada domínio na floresta do Active Directory e armazenar os dados coletados para cada domínio em um arquivo CSV separado para a equipe de TI responsável para esse domínio.
Antes de executar o script fornecido abaixo, certifique-se de:
- Crie um diretório com o nome “C:\Temp” no computador local para armazenar os arquivos CSV.
- substituir “enterprise.com” na variável $ CurForestName com o nome da sua floresta.
script de amostra
$DomList = "C:\Temp\DomList.TXT"remove-item $DomList -ErrorAction SilentlyContinue$CurForestName="enterprise.com"$GetForest=Get-ADForest $CurForestName$Items = $R.DomainsForEach ($Domains in $Items){ Add-Content $DomList $Domain.Name}Write-Host "Starting Script..."ForEach ($DomInFile in $DomList){ $DisabledCompsCSV = "C:\Temp\DisabledAccounts_Computers_"+$DomInFile+".CSV" Remove-item $DisabledCompsCSV -ErrorAction SilentlyContinue $DisabledUsersCSV = "C:\Temp\DisabledAccounts_Users_"+$DomInFile+".CSV" Remove-item $DisabledUsersCSV -ErrorAction SilentlyContinue $InActiveUsersReport = "C:\Temp\InactiveUsers_"+$DomInFile+".CSV" Remove-item $InActiveUsersReport -ErrorAction SilentlyContinue Get-ADComputer -Server $DomInFile –Filter {(Enabled –eq $False)} –ResultPageSize 2000 –ResultSetSize $null -Properties Name, OperatingSystem | Export-CSV $DisabledCompsCSV -NoTypeInformation Search-ADAccount -Server $DomInFile –AccountDisabled –UsersOnly –ResultPageSize 2000 –ResultSetSize $null | Select-Object SamAccountName, DistinguishedName | Export-CSV $DisabledUsersCSV –NoTypeInformation Search-ADAccount -Server $DomInFile –AccountInActive –TimeSpan 90:00:00:00 –ResultPageSize 2000 –ResultSetSize $null | ?{$_.Enabled –eq $True} | Select-Object Name, SamAccountName, DistinguishedName | Export-CSV $InActiveUsersReport –NoTypeInformation}Write-Host "Script Finished collecting required information. Please check report files under C:\Temp folder"
compartilhando os relatórios
uma vez que os relatórios CSV são gerados, você pode enviar o arquivo apropriado para cada equipe de TI via e-mail. Como alternativa, você pode incorporar o cmdlet Send-MailMessage no script para que o script envie esses e-mails automaticamente. Vamos discutir este cmdlet em um próximo artigo desta série.
como o Netwrix pode ajudar
embora usar o PowerShell seja muito mais rápido do que verificar manualmente contas desativadas e inativas, ainda é preciso muito trabalho para criar, manter e executar scripts. Se você é uma pessoa ocupada, considere procurar ferramentas que automatizem o trabalho e economizem tempo. Por exemplo, armado com o rastreador de usuário inativo gratuito, você poderá limpar ou bloquear rapidamente todas as suas contas de usuário obsoletas. E uma solução robusta como o NetWrix Auditor para o Active Directory permitirá que você informe o status da conta em apenas alguns cliques, bem como automatize a auditoria, descubra pontos fracos de segurança e simplifique as investigações de incidentes.