我正在使用lastLogonTimeStamp跟踪用户上次登录时间,如下代码所示:
$Domain = [System.DirectoryServices.ActiveDirectory.Domain]::GetCurrentDomain()
$ADSearch = New-Object System.DirectoryServices.DirectorySearcher
$ADSearch.SearchRoot ="LDAP://$Domain"
$ADSearch.SearchScope = "subtree"
$ADSearch.PageSize = 100
$ADSearch.Filter = "(objectClass=user)"
$properies = @("distinguishedName",
"sAMAccountName",
"mail",
"lastLogonTimeStamp")
foreach ($pro in $properies) {
$ADSearch.PropertiesToLoad.add($pro)
}
$userObjects = $ADSearch.FindAll()
foreach ($user in $userObjects) {
$logon = $user.Properties.Item("lastLogonTimeStamp")[0]
$lastLogon = [datetime]::fromfiletime($logon)
$lastLogon= $lastLogon.ToString("yyyy/MM/dd")
$lastLogon
}
我到目前为止:
1601/01/01
1601/01/01
3/12/2012
1601/01/01
3/19/2015
这不是我第一次对 1601/01/01 值感到困惑。我还阅读了有关此值的MS文档,对我来说这是无稽之谈,它没有描述它的目的是什么。不仅lastLogonTimeStamp
具有此输出,还有许多其他属性也返回此输出。所以我的问题是:
答案 0 :(得分:4)
"最后登录时间戳&#34>存在已知错误。和Windows 2016域控制器。
LDAP简单绑定不会像以前的操作系统(2012年,2008年)那样更新上次登录时间戳。小心。
我花了两个月的时间在MS上。最终会发布一个补丁......但是现在还没有修复。