Search-ADAccount :: Encontrando Contas Inativas, Desativadas ou Expiradas

5

O cmdlet Search-ADAccount tem opções -AccountDisabled , -AccountExpired e -AccountInactive ; cujos resultados não podem ser mutuamente exclusivos nem inclusivos.

i.e. uma conta que foi desativada ontem, mas ficou inativa por apenas 1 semana, pode não aparecer como desativada se o nosso período de tempo for de -90 dias. Por outro lado, uma conta que ainda não foi desativada, mas que não foi usada há algum tempo, aparece como inativa, mas não desativada.

Existe uma maneira de usar essas opções para listar todas as contas desativadas, expiradas OR inativas; ou preciso executar três consultas e fazer um | select * -unique para remover duplicatas?

    
por JohnLBevan 03.03.2015 / 21:41

1 resposta

10

Veja como eu faria isso.

Get-ADUser -Filter * -Properties Enabled, AccountExpirationDate, LastLogonDate | ? { '
($_.Enabled -EQ $False) -OR '
($_.AccountExpirationDate -NE $NULL -AND $_.AccountExpirationDate -LT (Get-Date)) -OR '
($_.LastLogonDate -NE $NULL -AND $_.LastLogonDate -LT (Get-Date).AddDays(-90)) }

Uma chamada para o AD, obtém apenas as propriedades de que precisamos. Inclui todos os usuários que estão desativados ou expirados (uma configuração incomum) ou "inativos".

Observe que LastLogonDate será nulo se a conta do usuário foi criada, mas o usuário nunca efetuou login.

O AccountExpirationDate também será nulo na maior parte do tempo, pois os administradores não costumam usar essa configuração. Você precisa verificar se eles não são nulos antes que comparações significativas com datas possam ser feitas contra eles.

Se você quiser incluir contas de usuário que nunca fizeram login, basta remover a verificação de $ Null on LastLogonDate ..., o que significa que você verá contas que podem ter sido criadas ontem e que não tiveram a chance de fazer login. no entanto ... nesse caso, para compensar, adicione um cheque de WhenCreated -LT (Get-Date).AddDays(-90) para ter certeza de obter apenas contas que foram criadas há mais de 90 dias, mas que nunca foram registradas.

E para responder à sua pergunta sobre o cmdlet Search-ADAccount ... não, use um cmdlet diferente, esses switches são mutuamente exclusivos.

    
por 03.03.2015 / 21:57