从活动目录中获取带有登录时间的用户列表的快速而又简单的方法是什么?

从活动目录中获取带有登录时间的用户列表的快速而又简单的方法是什么?

我试图获取特定时间范围内(例如,2012 年 10 月 10 日下午 2 点至 3 点之间)的用户列表及其登录时间(如果他们登录多次,则为 n 次)。

我一直在摆弄 powershell,但没有得到太多收获,从 Quest 下载了 PowerShell 扩展,尝试了一些片段,但找不到满足我需求的东西。

我的猜测是查询 Active Directory 服务器上的事件,但到目前为止还无法获得有效的代码片段。

答案1

@ansgar 是正确的,AD 仅存储每个帐户的最后登录时间 (lastlogontimestamp)。如果这对您来说足够了,这里有一个快速脚本,可以提取每个用户的 lastlogontimestamp 值:

$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

答案2

Active Directory 仅存储上次登录的时间戳。要获取登录历史记录,您必须解析所有域控制器上的安全事件日志登录/注销事件。 提防陷阱当你这样做的时候。

相关内容