【发布时间】:2021-10-28 03:18:43
【问题描述】:
我了解 lastlogon 是按 DC 存储的,并且 lastlogontimestamp 是复制的,但由于复制周期可能会延迟两周。
我有一个客户想要“实际”最后一次登录,所以我开始编写一个脚本来轮询每个 DC 上的所有用户,以比较他们的“最后一次登录”值、排序并获取最新的。 ...但我发现了一些令人困惑的事情——我发现在所有 DC 中都有帐户没有 DC 具有身份验证记录(lastlogon 为 0/null 值),但该帐户显示 lastlogontimestamp 值...
环境是具有一个子域的林根域。我最初只是使用:
@([System.DirectoryServices.ActiveDirectory.Domain]::GetCurrentDomain().DomainControllers.Name)
...但假设他们的 AD 站点和服务可能被抬高了——这是我唯一能想出的一个可能的原因,为什么没有 DC 显示报告的“最后登录”时间,但所有的都显示'lastlogontimestamp' 值。于是,我开始查询:
@([System.DirectoryServices.ActiveDirectory.Forest]::GetCurrentForest().GlobalCatalogs.Name)
...但最终得到相同的结果:一些帐户报告 lastlogon 的全为零,但显示 lastlogontimestamp 的实际时间戳!怎么?!
谁能帮我解开这个疯狂?
$DCs = @([System.DirectoryServices.ActiveDirectory.Domain]::GetCurrentDomain().DomainControllers.Name)
$DCs = @([System.DirectoryServices.ActiveDirectory.Forest]::GetCurrentForest().GlobalCatalogs.Name)
$LdapFilter = '(&(objectCategory=person)(objectClass=user))'
$Properties = 'distinguishedname','lastlogon','samaccountname','lastlogontimestamp'
$t = [System.Collections.ArrayList]::new()
foreach ($dc in $DCs) {
$s = [adsisearcher]"$LDAPFilter"
$s.PageSize = 9999
$s.SearchRoot = [adsi]"LDAP://$dc"
[void] $s.PropertiesToLoad.AddRange($Properties)
$r = @($s.FindAll())
if ($r.Count -gt 0) {
$r | ForEach-Object {
$temp = [pscustomobject]@{
'samaccountname' = $_.Properties['samaccountname'][0]
'server' = $dc
'lastlogon' = ([int64]$_.Properties['lastlogon'][0])
'lastlogontimestamp' = ([int64]$_.Properties['lastlogontimestamp'][0])
}
[void]$t.Add($temp)
}
}
}
foreach ($g in ($t | Group-Object -Property samaccountname)) {
$x = $g.Group | Sort-Object -Property lastlogon -Descending
$x
}
【问题讨论】:
-
抱歉格式化,在我提交这个的网络上,我无权访问 SO 上的格式化按钮。
-
我不得不问这个愚蠢的问题。这些帐户登录后是否有任何域控制器停用?
-
如您所知,一个属性被复制而一个属性没有被复制。然而,这并不是他们之间的唯一区别。我相信对于用户来说,LastLogon 是当一个帐户登录到加入域的工作站或服务器时。当有人访问文件共享或登录网络邮件时,它不会更新。那时 LastLogonTimeStamp 可能会更新。如果需要,请随时纠正我。这些用户是否有可能从未真正登录到加入域的计算机?
-
是的,他们都应该对控制台会话执行交互式键盘身份验证,坐在直接连接到网络的加入域的机器前面。
-
关于退役 DC 的问题——虽然有可能,但 lastlogontimestamps 值显示的是今天的日期...
标签: powershell active-directory