1601 / 01/01的lastLogonTimeStamp属性

时间:2017-07-10 14:28:24

标签: windows powershell active-directory ldap

我正在使用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具有此输出,还有许多其他属性也返回此输出。所以我的问题是:

  1. 这个值的目的是什么?
  2. 在这种情况下,我应该将什么作为正确的人类可读输出返回? (此属性对此用户无效?)

1 个答案:

答案 0 :(得分:4)

"最后登录时间戳&#34>存在已知错误。和Windows 2016域控制器。

LDAP简单绑定不会像以前的操作系统(2012年,2008年)那样更新上次登录时间戳。小心。

我花了两个月的时间在MS上。最终会发布一个补丁......但是现在还没有修复。

相关问题