none
账户最后一次登录时间问题 RRS feed

  • 问题

  • 想确认账户最后一次登录成功的时间,不仅仅是最后一次登录邮件系统(Exchange 2016)

    经查用户AD中的记录

    LastLogonDate     lastLogonTimestamp
    -------------     ------------------
    2021/5/9 19:39:13 132650339534984096

    但是在exchange管理界面查看最后一次登录时间显示为“2021/9/27 19:27”相差特别大 。经测试发现,使用“完全管理”权限的账户登录也会触发“上次登录时间”的改变。 

    Exchange ECP结果

    完全控制权限

    需求:

    1.想要 查询账户最后一次登录时间,究竟以哪个为准

    2.上述情况在什么情况下可能出现(AD最后一次登录时间和Exchange中上次登录时间,相差较大(大于14天)现象)

    2021年10月9日 7:52

答案

  • 您好,

    根据我的理解以及在lab中的测试,EAC中的上次登录时间显示的是此用户邮箱最后一次被访问的时间。

    如您所述,如果具有该邮箱的完全访问权限的其他用户登陆了此邮箱,该时间也会随之变动。

    但这种情况下其实该用户自身并没有进行登陆,可能就会造成您描述的AD上显示的登陆时间和Exchange上的登陆时间出现较大差异的情况。

    --------------------------

    如果您希望查询用户最后一次登陆时间的话,我认为应该以ADUC(Active Directory Users and Computers)中该用户的"lastLogon"这个属性为准。

    该属性代表了用户最后一次在该DC上认证成功的时间。

    如果用户使用凭证登陆了Exchange邮箱的话,这个行为也需要在DC上进行身份认证,因此这个属性显示的时间也会随之更新。


    此外,需要注意的一点是如果您环境中有多台DC的话,这个属性显示的时间会出现不同。

    出现此差异的原因在于该属性记录的是用户在本台DC上最后一次进行身份验证的时间,如果用户未通过本台DC而是在其他DC上进行了验证,本台DC上此属性的值就不会更新。

    因此您也可以通过这篇文章中的以下脚本来查询所有DC上的lastLogon属性的值:

    $(foreach ($DC in ((get-addomaincontroller -filter * | sort name).name) )
    { 
    $user = get-aduser <user name> -properties lastlogon -server $dc | select name,lastlogon; 
    echo "$DC - $(w32tm /ntte $user.lastlogon)" }  
    )

    --------------------------

    您使用的AD命令导出的LastLogonDate这个属性,对应的ADUC属性应该为上方截图中的lastLogontimeStamp属性。

    根据这篇官方文档中的解释:“The LastLogonTimeStamp Attribute” – “What it was designed for and how it works”

    按照我的理解,这个属性虽然会在多台DC之间进行同步,但是会存在一定的误差。

    因此应该不能准确代表用户实际最后一次登陆的时间。

    此致,

    Kael Yao


    如果以上回复对您有所帮助,建议您将其“标记为答复”. 如果您对我们的论坛支持有任何的建议,可以通过此邮箱联系我们:tnsf@microsoft.com.

    • 已标记为答案 Caesar_CL 2021年10月11日 9:14
    2021年10月11日 6:02

全部回复

  • 您好,

    根据我的理解以及在lab中的测试,EAC中的上次登录时间显示的是此用户邮箱最后一次被访问的时间。

    如您所述,如果具有该邮箱的完全访问权限的其他用户登陆了此邮箱,该时间也会随之变动。

    但这种情况下其实该用户自身并没有进行登陆,可能就会造成您描述的AD上显示的登陆时间和Exchange上的登陆时间出现较大差异的情况。

    --------------------------

    如果您希望查询用户最后一次登陆时间的话,我认为应该以ADUC(Active Directory Users and Computers)中该用户的"lastLogon"这个属性为准。

    该属性代表了用户最后一次在该DC上认证成功的时间。

    如果用户使用凭证登陆了Exchange邮箱的话,这个行为也需要在DC上进行身份认证,因此这个属性显示的时间也会随之更新。


    此外,需要注意的一点是如果您环境中有多台DC的话,这个属性显示的时间会出现不同。

    出现此差异的原因在于该属性记录的是用户在本台DC上最后一次进行身份验证的时间,如果用户未通过本台DC而是在其他DC上进行了验证,本台DC上此属性的值就不会更新。

    因此您也可以通过这篇文章中的以下脚本来查询所有DC上的lastLogon属性的值:

    $(foreach ($DC in ((get-addomaincontroller -filter * | sort name).name) )
    { 
    $user = get-aduser <user name> -properties lastlogon -server $dc | select name,lastlogon; 
    echo "$DC - $(w32tm /ntte $user.lastlogon)" }  
    )

    --------------------------

    您使用的AD命令导出的LastLogonDate这个属性,对应的ADUC属性应该为上方截图中的lastLogontimeStamp属性。

    根据这篇官方文档中的解释:“The LastLogonTimeStamp Attribute” – “What it was designed for and how it works”

    按照我的理解,这个属性虽然会在多台DC之间进行同步,但是会存在一定的误差。

    因此应该不能准确代表用户实际最后一次登陆的时间。

    此致,

    Kael Yao


    如果以上回复对您有所帮助,建议您将其“标记为答复”. 如果您对我们的论坛支持有任何的建议,可以通过此邮箱联系我们:tnsf@microsoft.com.

    • 已标记为答案 Caesar_CL 2021年10月11日 9:14
    2021年10月11日 6:02
  • 感谢,在问一下如何查找出哪个高权限用户访问了指定用户的邮箱呢?导致“上次登录时间”出现偏差
    2021年10月11日 9:16
  • 您好,

    请问您之前有对该邮箱启用邮箱审核日志(Mailbox Audit Log)吗?

    如果启用了该日志的话,您可以通过Search-MailboxAuditLog命令来查看拥有full access权限的用户对该邮箱进行的操作。

    命令示例如下:

    Search-MailboxAuditLog -identity user01 -logontypes delegate -showdetails | fl LastAccessed,LogonUserDisplayName,Operation,OperationResult

    该命令可以查看具有full access权限的用户登陆邮箱并执行了操作的时间及结果。

    ------------

    但需要注意的一点是如果仅仅是登陆了邮箱,而没有进行任何邮箱审核日志中会记录的相关操作的话,登陆的这个行为是不会被记录的。

    如果您希望查看是哪一位用户访问了该邮箱的话,您可能需要查看IIS日志,寻找对应Exchange服务器上显示的邮箱的最后一次登陆时间(在IIS日志中默认会以UTC时间显示),查看对应的时间段内发起请求的客户端首先登陆的是哪一个邮箱账号。

    此致,

    Kael Yao


    如果以上回复对您有所帮助,建议您将其“标记为答复”. 如果您对我们的论坛支持有任何的建议,可以通过此邮箱联系我们:tnsf@microsoft.com.

    2021年10月12日 6:51