Assistência do Powershell para limpeza do Active Directory

4

Acabei de iniciar um contrato para limpar um sistema do Active Directory para uma grande empresa. Foi-me dito que seria um trabalho muito trabalhoso, mas depois de analisar o sistema e ver como ele é desorganizado e confuso, percebi que não seria capaz de desempenhar minhas tarefas ao máximo. Essencialmente, essa empresa possui muitas contas que não estão ativas, mas ainda não podem ser excluídas. Eu quero realizar um "teste de grito" para determinadas contas e excluir mais tarde. Se isso fosse apenas alguns milhares de contas inativas, seria uma história, mas infelizmente são alguns milhares (eu ainda não peguei um número exato, mas é mais de 20.000). Fiquei curioso se alguém soubesse de uma maneira de classificar essas informações de maneira automatizada, além de usar o Hyena para obter relatórios e, em seguida, passar por eles um a um.

    
por TheNoobofNoobs 15.04.2014 / 23:06

6 respostas

7

Suponho que sua pergunta está em encontrar contas inativas.

Eu uso a ferramenta Oldcmp do JoeWare. link ainda depois de todos esses anos.

Ele pode encontrar contas inativas do AD observando a idade da senha e, especificamente, LLTS = lastLogonTimestamp

É simples o suficiente para pelo menos começar e mais fácil que o powershell. Em seguida, desabilite essas contas e use o ADUC para criar uma janela de consulta personalizada para contas desabilitadas. Dessa forma, você não precisa mover nada que precise ser reativado mais tarde.

MAS ... Concordo com Hopeless e Mfinni, e diria que é melhor definir claramente o que você planeja fazer com a gerência ANTES de implementar qualquer coisa.

    
por 15.04.2014 / 23:56
1

Eu uso o Powershell para fazer isso, chamando o lastlogondate propertie.

Aqui eu retorno todos os samaccountname que têm uma data do último logon com mais de 30 dias (a partir de hoje):

$datenow = Get-date
$treshold=$datenow.AddDays(-30)
$users=Get-ADuser -Filter * -properties samaccountname,lastlogondate
foreach($user in $users) {
  $lastlogon = $user.lastlogondate
  if($lastlogon -lt $treshold) { 
    echo $user.samaccountname
    echo $user.lastlogondate
    echo "------------------------------------------------"
  }
}

A partir daqui, você pode:

  • Ajuste o limite de data para suas necessidades
  • Desativar a conta do AD ( Disable-ADAccount )
  • O que mais você quiser (pelo menos, a maioria das coisas)
por 16.04.2014 / 00:41
0

Um bom conselho acima re: alterar o controle e documentar as permissões. Eu tentaria uma abordagem como essa

Crie um inventário de conta que inclua atributos como lastLogonTimestamp , pwdLastSet , whencreated e whenchanged . Você pode pegar tudo isso com Powershell e get-ADUser . Tenho certeza de que existem muitos scripts na Web. O repositório do TechNet Script é um bom lugar para começar

Use o inventário para localizar contas de destino.

Antes de alterar o AD, considere testar tudo em um ambiente de teste. Existem alguns scripts no repositório que permitirão que você faça uma cópia do AD (UOs, Usuários e grupos) em seu ambiente de teste.

    
por 16.04.2014 / 13:52
0

Eu fiz uma tarefa semelhante há alguns anos, embora em uma escala muito menor do que a que você está enfrentando. A primeira coisa que fizemos foi implementar o produto de Auditoria de Auditoria da ManageEngine para obter um controle sobre as contas. Nós provavelmente deixamos isso acontecer por algumas semanas para gerar métricas antes de fazermos qualquer outra coisa. A partir daí, pudemos rastrear a origem dos logins das contas e conseguimos lidar com eles de maneira controlada.

AD Audit é um produto de custo relativamente baixo e os relatórios do Excel são muito bons, por isso ficamos muito felizes com nossa decisão.

    
por 16.04.2014 / 21:19
0

Aqui estão algumas soluções abaixo. Não tenho certeza se é isso que você está procurando.

Exemplo # 1: Isso pesquisará a UO Usuários no domínio domain.local usando a data especificada. Você pode alterá-los abaixo e gerar o nome de usuário e LastLogonTimestamp , como:

User1

13/2/2014

User2

12/12/2013

Import-Module Active Directory
$lastdate = "09 April 2014 23:59:59"
$users = Get-ADUser -Filter * -SearchBase "ou=users,dc=domain,dc=local" -ResultPageSize 0 -Prop CN,lastLogonTimestamp | Select     CN,@{N='lastlogontimestamp'; E={[DateTime]::FromFileTime($_.lastlogontimestamp)}}
foreach ($user in $users) {
if ($user.lastlogontimestamp -lt $lastdate) {
echo $user.CN
echo $user.lastlogontimestamp.tostring('d/M/yyyy')
}
}

Exemplo # 2: Isso pesquisará a UO Usuários no domínio domain.local . Em seguida, exporte-o para um CSV e, em seguida, você poderá ver seus dados um pouco melhor.

Import-Module ActiveDirectory
Get-ADUser -Filter * -SearchBase "ou=users,dc=domain,dc=local" -ResultPageSize 0 -Prop CN,lastLogonTimestamp | Select    CN,@{N='lastLogonTimestamp'; E={[DateTime]::FromFileTime($_.lastLogonTimestamp)}} | Export- CSV -NoType .\last.csv

Com o Exemplo 2, você pode criar uma lista de usuários que você irá remover / desativar no CSV / Excel e ir para o Gerenciamento com estes.

Espero que isso ajude!

    
por 17.04.2014 / 16:49
0

Como muitos outros mencionaram o TEST antes de fazer qualquer alteração, especialmente ao criar scripts ou fazer alterações de produção no AD.

Eu procuraria no módulo gratuito do Active Directory (na verdade, é um snap-in) de Quest

O cmdlet da Quest Get-QADUser inclui vários paratmers relacionados a inatividade de associação, como -Inactive , -InactiveFor , -ExpiredFor , -NotLoggedOnFor e -PasswordNotChangedFor que permitem relatar facilmente contas inativas com base nos valores fornecidos para esses parâmetros. Eu sugiro baixar o módulo e usar Get-Help Get-QADUser -Full | more ou se você tiver o ISE instalado, prefiro Get-Help Get-QADUser -Show para obter todos os detalhes em uma janela separada.

Um exemplo poderia ser:

Get-QADUser -ExpiredFor 30 -NotLoggedOnFor 30 -PasswordNotChangedFor 90 | Select-Object Name,SamAccountName,PasswordLastSet,PasswordIsExpired,LastLogonTimestamp,AccountIsExpired | Sort-Object Name | Export-CSV C:\InactiveADUsers.csv -NoTypeInformation -Force

Você pode obter resultados muito semelhantes usando o módulo nativo do AD com um pouco mais de graxa de cotovelo.

    
por 17.04.2014 / 17:15