O que é uma maneira rápida e suja de obter uma lista de usuários com o tempo de login do diretório ativo?

3

Estou tentando obter uma lista de usuários com seu tempo de login (n vezes se eles fizeram login mais de uma vez) em um intervalo de tempo específico, por exemplo, entre 14h e 15h em 10/10/2012.

Eu andei brincando com o PowerShell, mas não consegui muito, baixei as extensões do PowerShell da Quest, experimentei alguns trechos, mas não consegui encontrar algo que atendesse às minhas necessidades.

Meu palpite é consultar os eventos no servidor do Active Directory, mas não consegui obter um snippet que funcione até agora.

    
por Andrei Dvoynos 10.10.2012 / 22:45

2 respostas

2

O @ansgar está correto, o AD armazena apenas o horário do último logon (lastlogontimestamp) para cada conta. Se isso for suficiente para você, aqui está um script rápido que extrai o valor lastlogontimestamp para cada usuário:

$a = [adsisearcher]'(&(objectcategory=user)(objectclass=user))'
$a.PageSize = 1000
[void]$a.PropertiesToLoad.Add('name')
[void]$a.PropertiesToLoad.Add('lastlogontimestamp')
$a.FindAll() | ForEach-Object {
    $op = '' | select name,llts
    $op.name = $_.properties.name[0]
    if($_.properties.lastlogontimestamp)
    {
        $op.llts=[datetime]::fromfiletime($_.properties.lastlogontimestamp[0])
    }
    else
    {
        $op.llts=$null
    }
    $op
} | Format-Table -AutoSize
    
por 10.01.2013 / 08:16
1

O Active Directory armazena apenas o timestamp do último logon . Para um histórico de logon, você terá que analisar os logs de eventos de segurança em todos os controladores de domínio para logon / logoff eventos . Cuidado com as armadilhas enquanto você faz isso.

    
por 10.10.2012 / 23:02