Seguir uma prova de conceito pode ajudar você a começar. A idéia é usar o Powershell para pesquisar logs de eventos para eventos de logon / logoff para um determinado SID.
- Encontre o SID usando
(Get-ADUser <username>).SID
no Powershell - Executar no powershell
$query = @"
<QueryList>
<Query Id="0" Path="System">
<Select Path="System">
*[EventData[Data[@Name='UserSid']='<SID>']]
and (*[System[(EventID='7001')]] or *[System[(EventID='7002')]])
</Select>
</Query>
</QueryList>
"@
('server1', 'server2) | % {Get-WinEvent -ComputerName $_ -Filterxml $query -MaxEvents 1}
O filtro xml retorna apenas eventos de logon / logoff. Selecionando apenas 1 evento usando MaxEvents
, você obtém uma lista de todos os servidores que você passou para o método Get-WinEvent
com uma mensagem de logon ou logoff. As mensagens de logon são servidores nos quais o SID ainda está conectado.