Histórico de Login Servidores Windows
Fala galera, tudo beleza?
Hoje vou compartilhar um script que me ajudou muito recentemente.
É muito comum no dia-a-dia da administração de uma rede precisarmos saber quando e por quanto tempo um usuário ficou logado em um servidor.. Nas novas versões do Windows, por padrão vem habilitado a auditoria de login. Este recurso registra em log todos os acessos aos computadores. Porém, os logs do Windows nem sempre são amigáveis e fáceis de entender. Algumas ferramentas terceiras facilitam nossa vida, mais com o poweshell do Windows temos recursos suficientes para encontrarmos o que precisamos.
Powershell
Com o Powershell é possível consultar os logs do Windows e filtrar os resultados para uma melhor visualização e entendimento. Vamos ver a seguir os princípios básicos da nossa consulta.
Segue um exemplo de uma consulta:
Nesta consulta nos conseguimos obter todos os logins efetuados durante os últimos 3 dias. Porém o resultado é praticamente o mesmo que consultar o Event Viewer, normalmente não muito claro para saber o histórico de de login no computador.
Para filtrar e ter uma melhor visualização das informações podemos utilizar outros recursos do Powershell, segue abaixo o código que cria uma função chamada Get-LogonHistory:
PS C:\> function Get-LogonHistory{
Param (
[string]$Computer = (Read-Host Remote computer name),
[int]$Days = 10
)
cls
$Result = @()
Write-Host “Gathering Event Logs, this can take awhile…”
$ELogs = Get-EventLog System -Source Microsoft-Windows-WinLogon -After (Get-Date).AddDays(-$Days) -ComputerName $Computer
If ($ELogs)
{ Write-Host “Processing…”
ForEach ($Log in $ELogs)
{ If ($Log.InstanceId -eq 7001)
{ $ET = “Logon”
}
ElseIf ($Log.InstanceId -eq 7002)
{ $ET = “Logoff”
}
Else
{ Continue
}
$Result += New-Object PSObject -Property @{
Time = $Log.TimeWritten
‘Event Type’ = $ET
User = (New-Object System.Security.Principal.SecurityIdentifier $Log.ReplacementStrings[1]).Translate([System.Security.Principal.NTAccount])
}
}
$Result | Select Time,”Event Type”,User | Sort Time -Descending | Out-GridView
Write-Host “Done.”
}
Else
{ Write-Host “Problem with $Computer.”
Write-Host “If you see a ‘Network Path not found’ error, try starting the Remote Registry service on that computer.”
Write-Host “Or there are no logon/logoff events (XP requires auditing be turned on)”
}
}
Após executar o código acima basta executar a função criada na linha de comando do powershell:
PS C:\> Get-LogonHistory
Será solicitado o nome do computador:
Após inserir nome o PowerShell realizará a coleta dos logs e mostrará o resultado na seguinte tela:
Muito tranquilo de executar e o resultado é mostrado de forma clara, facilitando a informação para alguma auditoria por exemplo.
Até a próxima!!!!
O 2º código tem algum erro de execução.
Obrigado pelo aviso o Leonardo
o wordpress acabou inserindo um parâmetro que não faz parte do código
já fiz o ajuste
pode tentar usar novamente o código
Deu certo agora Eduardo. Muito Obrigado!
Eu gostaria muito de verificar todos meus históricos de login desde 2020 no meu PC e a informação do IP, você tem algum email de contato? Eu procurei vários artigos na internet mas foi o seu que acho resolve meu problema.
Olá Leonardo
Esse script utiliza os dados armazenados nos eventos de segurança do Windows para trazer as informações.
Desde 2020 não sei se é possível, devido a quantidade de informações que é armazenada nos eventos de segurança.
Mais pode tentar alterando a quantidade de dias desejados no inicio do script