Listar contas sem acesso no Exchange – PowerShell

stale accounts contas obsoletas contas sem acesso no exchange exchange online exo powershell exchange

Faaala galera, 100%??

Recentemente, durante um projeto de migração, tive a missão de buscar em cerca de 8000 contas quais não eram acessadas a mais de 90 dias. A demanda surgiu para evitar que contas obsoletas ou que foram esquecidas e não eram mais utilizadas fossem migradas.

Esse tipo de situação é comum e depois de algum tempo passou a fazer parte do meu “to-do” nas migrações de correio que participo. Além de reduzir o volume de dados na migração ajuda também, obviamente, a reduzir o custo operacional. Em alguns casos quando utilizamos ferremntas de terceiros o custo final do projeto também é drasticamente reduzido pois em geral esse tipo de licenciamento é feito por conta.

Vamos a solução, usando o bom e velho (nem tanto assim) PowerShell.

Buscando contas sem uso/acesso a mais de 90 dias

Get-Mailbox -ResultSize Unlimited | Get-MailboxStatistics | Where{$_.Lastlogontime -lt (Get-Date).AddDays(-90)} | Select DisplayName, LastLoggedOnUserAccount, LastLogonTime

Relaxa, vamos entender cada bloco do script. Lembre-se que copiar e colar qualquer um faz, entender o que está fazendo e ajustar a sua necessidade é o que fará diferença em sua carreira. Let’s rock!

Dissecando o Script

Get-Mailbox -ResultSize Unlimited

Esse bloco busca todas as mailboxes ativas. O “-ResultSize Unlimited” é um parametro necessários pois por padrão apenas os primeiros 1000 resultados são exibidos.

Get-MailboxStatistics

O segundo comando busca as estastisticas de cada mailbox que foi encontrada utilizando o comando anterior. Ele é necessário pois a ideia aqui é buscar o campo “LastLogonTime”. Ele quem nos dirá quando a conta foi acessada pela última vez

Where{$_.Lastlogontime -lt (Get-Date).AddDays(-90)}

Esse parametro, embora pareça complexto, é uma busca simples. O que ele faz é: Traga as estatística onde o campo “LastLogon” seja menor do que “(-lt = less than) 90 dias “(Get-Date).AddDays(-90) = GetDate busca a data de hoje, .AddDays(-90) conta hoje menos 90 dias”.

Alterando o “90” você define qual o período que deseja pesquisar. Se utilizar um numero positivo, serão contas com acesso nos últimos x dias. Números negativos, contas que foram acessas pelas última vez a X dias.

Select DisplayName, LastLoggedOnUserAccount, LastLogonTime

Do resultado que filtramos apenas os campos Display Name, Ultimo Usuario que fez o acess e Ultima data de acesso serão exibidos. Isso é bacana para limpar o resultado.

Resultado / Conclusão

Na vida real você verá algo parecido com o print abaixo!

Você poderia também incluir um Export-CSV e mandar tudo isso para um arquivo csv para manipular como desejar.

A parte banca é que esse comando funciona tanto para Exchange Server quanto para o Exchange Online.

Espero que tenha curtido! Grande abraço \,,/

Faça o primeiro comentário a "Listar contas sem acesso no Exchange – PowerShell"

Comentar

O seu endereço de email não será publicado.


*


Este site utiliza o Akismet para reduzir spam. Fica a saber como são processados os dados dos comentários.