Quer saber a data do último logon dos Users no AD?
Mais cedo ou mais tarde alguém vai chegar para você e pedir uma lista de usuários que não logam na rede há X dias se é que alguém ja não te pediu isso algumas vezes, neste artigo vou descrever os passos para descobrir estas informações, com este artigo iniciamos a Categoria Scripts onde falarei sobre as possibilidades de consulta e automatização de tarefas dentro do Active Directory.
Mais cedo ou mais tarde alguém vai te pedir uma lista de usuários com a respectiva data de último logon, ou uma lista de usuários que não fazem logon há mais de 30,60 ou 90 dias, vamos ver como obter estas informações ?
Primeira parte: A Teoria
Quando pesquisamos a data de último logon de um User estamos buscando a informação do atributo lastLogon que fica dentro das propriedades do Usuário, se você nunca viu esta propriedade é por quê ela não esta disponível no Active Directory Users and Computers, esta informação fica visível apenas através do ADSI Edit, veja abaixo:

No entanto o valor que fica armazenado neste atributo está em formato Íntegro com 8 bytes, o que faremos é utilizar esta informação para Filtro e para pesquisa e converter este dado para saber a data do último logon, além disso outra informação é super importante, esse atributo LastLogon veio com o Windows Server 2000 mas conforme os administradores foram utilizando perceberam que o atributo não é replicado entre os Domain Controllers, isso significa que se uma rede tem mais de um DC e um Usuário faz logon em um determinado DC e depois de um mês faz em outro, teriamos que coletar o atributo nos dois DC´s e depois comparar a informação, pois isto não seria replicado automaticamente.
Devido a esta dificuldade a Microsoft criou com o Windows Server 2003 um outro atributo que grava a mesma informação no entanto replica esta informação entre os DC´s, repare na imagem acima que você tem outro atributo muito semelhante que é o LastLogonTimeStamp, esse é o atributo criado e que replica entre os DC´s.
Segunda Parte: Prática
Podemos fazer esta consulta filtrando por data que é a maneira mais fácil, através das SavedQueryes dentro do Active Directory Users and Computers, veja só:

Primeiro vamos criar a Saved Query, basta clicar com o botão direito em cima de Saved Queryes > New > Query

Defina um nome e uma descrição, depois clique em “Define Query”

Não selecione nenhum filtro com o Nome ou a Descrição, o filtro será “Days Since Last Logon” escolha entre as opções e clique em OK.

Pronto criamos a Saved Query e sempre que um Usuario ficar sem logar por mais de 30,60,90,120 ou 180 dias, depende do que você escolheu no passo anterior, ele vai aparecer aqui na Saved Query.
Agora digamos que você quer saber uma lista completa de todos os Usuários e suas respectivas datas de último logon, nesse caso a solução é menos gráfica, teremos que usar um script para buscar estes dados e gravar a informação dentro de um arquivo, existe um script pronto que foi criado por Richard Mueller para fazer o donwload basta clicar aqui, não esqueça de descompactar e renomear o arquivo para .vbs ok, agora que você já fez o download e já renomeou o arquivo para .vbs rode ele através de um prompt, não esqueça que você tem que rodar o prompt no Servidor de Dominio “DC”.
Este é o comando para executar o script no meu caso eu coloquei o script no caminho c:scripts você pode colocar onde quiser mas não esqueça de mencionar o caminho no comando do cscript, depois do caminho vem a instrução para gravar os dados em um arquivo > c:lastlogon.txt

E Voilá aqui estão os usuários e suas respectivas datas, lembre-se que este script realiza a consulta usando o LastLogon, embora o script busque em todos os DC´s isso pode fazer com que alguns users apareçam repetidos com datas de logon diferentes, se o seu dominio já roda em nível funcional Windows Server 2003 você pode utilizar outro script que busca o atributo LastLogonTimeStamp basta clicar aqui para fazer o Download do script, a utilização é a mesma descrita aqui só que nesse segundo caso não vão aparecer usuários duplicados na lista.
Créditos:
Richard Mueller:
É MVP e desenvolve scripts para Windows Server os dois scripts citados aqui são de autoria dele.
Felicio | Scripts | 02 13th, 2009 |





6 People have left comments on this post
Felicio, primeiramente quero parabenizar pelo excelentissimo site que está dez muito bem elaborado.
Estou com uma dificuldade para ativar o recurso do LastLogon que você comenta na dica ” Quer saber a data do último logon dos Users no AD” já localizei o ADSIEDIT mas não tem ativa no meu DC. qual é a forma correta de incluir este recurdo.
Muito obrigado e parabens pelo site
Ola Paulo,
Muito obrigado, eu gostaria de pedir a você que poste sua dúvida no fórum, existe uma seção para esclarecer as dúvidas dos tutoriais, ai lá fica disponível para todos. Preciso também de maiores informações sobre a falha, ok
Felício, parabéns pelo post!!
Estamos trabalhando na implementação do AD aqui na empresa, e por meio da sua dica, conseguimos descobrir exatamente quando o usuário fez o último logon.
Mais uma vez, parabéns!
Silas Lopes
Por que alguns aparecem com o ano de 1601?
Vi que no seu também tem..
Acredito que sejam os users que foram criados no momento da instalação do server e criação do dominio. Os famosos usuários buil-in.
Nadja: usuários com data de 1601 são os que nunca se logaram no domínio. Teste criando um usuário qualquer e rode o script. Ele vai aparecer com esse ano.