微软在Windows Server 2003中引入了LastLogonTimeStamp属性。管理员们可以利用这个属性查看用户或者计算机最近是否登录过域。根据这些信息,管理员可以对长时间没有登录的账户采取相应的措施。

有人就会问了,不是有LastLogon这个属性吗,为什么还要引入LastLogonTimeStamp这个属性呢?这个问题问得好,那么我先来解释一下这两个属性的区别吧。

    LastLogon是记录某个账户上一次在该域控制器认证的时间。该属性是不会在域控制器之间复制的。所以,要是以前需要确定账户最后一次登录域的 时间,必须查看所有域控制器上的LastLogon,最大的那个值就代表了账户最后一次登录域的时间。LastLogon只会记录交互式登 录,Kerberos验证的用户。

    LastLogonTimeStamp的值会在所有域控制器间复制。所以管理员只要从一个域控制器上就能得到用户上次登录的信息。不 过,LastLogonTimeStamp的值并不一定代表真实的最后一次登录域的时间。它是根据一个更新间隔来更新的(注意:要启用这个属性,域功能级 别必须是Windows Server 2003喔)。LastLogonTimeStamp会记录交互式登录,KerberosNTLM验证的用户。管理员利用该值对长时间没有登录的账号进行管理,该值能够反映出账号长时间没有登录。所以,在合适的更新间隔情况下,LastLogonTimeStamp就能反映出长时间没有登录这个信息,同时减少了AD复制流量,减轻了网络负担,何乐而不为呢?

下面是LastLogonTimeStamp的更新计算机方式:

    基本更新间隔是由msDS-LogonTimeSyncInterval这个属性定义的。默认是14天。该基本更新间隔可以在域的属性中设置,范围 为1100,000天。同时还有一个窗口(Window)以及一个随机参数(Parameter)用来调节整个更新间隔,避免 LastLogonTimeStamp的值在同一个时间更新。窗口的默认值为5天,随机参数为一个百分比。真正的更新间隔Actual_Interval 计算公式如下:

Actual_Interval = msDS-LogonTimeSyncInterval  Window * Parameter 

举例说明:假如一个用户的LastLogonTimeStamp2015/12/03,该用户在2011/09/12再次登录域。msDS- LogonTimeSyncInterval14Window5Parameter80%。所以真正的更新间隔Actual_Interval 14  5 * 0.8 = 10。这时候由于没有满足更新条件,所以LastLogonTimeStamp不更新。请注意,用户登录后,在提供认证服务的域控制器 上,LastLogon更新为2015/12/03。假如该用户在2015/12/13再次登录,这时候LastLogonTimeStamp就会更新为 2015/12/13,并在域控制器之间进行复制。