You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

通过PowerShell获取AD计算机对象准确最后登录时间问题咨询

结论

lastLogon属性返回大整数格式是完全正常的现象,不属于查询错误。

原因说明

Active Directory对lastLogon属性的原生存储格式为Windows FileTime(64位大整数),数值代表从1601年1月1日00:00 UTC起累计的100纳秒间隔数,你查询结果中133000120204176004就是该属性的原生存储值。
你现有脚本中已经通过[datetime]::FromFileTime($_.LastLogon)做了格式转换,返回结果里的LastLogonDate字段就是转换后人类可读的标准时间格式。

现有脚本逻辑说明

你目前遍历所有域控制器、取每个计算机对象最大lastLogon值的思路是正确的:lastLogon属性默认不会在域控制器之间做复制,每台DC只会存储自身认证过的对象的最后登录时间,只有遍历所有DC取最大值,才能拿到域内计算机最准确的最后登录时间。

脚本存在的小问题及修正

你现有脚本的字典判断逻辑存在空引用bug:第一次遍历到某台计算机时,字典中不存在对应键值,直接访问.lastLogonDate属性做比较会触发报错。将循环内的判断逻辑替换为以下代码即可修复:

foreach($computer in $computerList)
{
    $currentSam = $computer.samAccountName
    # 无记录直接存入,有记录则比较后保留时间更新的条目
    if(-not $logons.ContainsKey($currentSam) -or $logons[$currentSam].LastLogonDate -lt $computer.LastLogonDate)
    {
        $logons[$currentSam] = $computer
    }
}

内容的提问来源于stack exchange,提问作者Arbelac

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.29 08:18:27