Windows

Active Directory 中的 lastLogon 與 lastLogonTimestamp

  • April 5, 2022

一名員工離開了公司。我試圖找出他的 AD 帳戶最後一次登錄的時間——是在解僱之前還是之後。

使用者屬性視窗中有這兩個屬性:lastLogonlastLogonTimestamplastLogon日期早於解僱日期,但lastLogonTimestamp日期晚於解僱日期(因此在這種情況下,我們會遇到安全問題)。

如何知道,這些屬性中的哪一個顯示了實際的最後一個 AD 帳戶登錄時間?它們之間有什麼區別?

使用者屬性 - 屬性編輯器

使用最新的屬性。

Lastlogon 僅在執行身份驗證的域控制器上更新,不會複製。

LastLogontimestamp 被複製,但預設情況下僅當它比之前的值早 14 天或更長時間時。

http://social.technet.microsoft.com/wiki/contents/articles/22461.understanding-the-ad-account-attributes-lastlogon-lastlogontimestamp-and-lastlogondate.aspx

TL;DR - 如果您想要最準確的登錄時間,您必須lastLogon從所有域控制器中查詢該屬性。如果公差 ±19 天是可以接受的,那麼您可以lastLogonTimestamp從最近的域控制器讀取。


上次登錄

此屬性不會複製,而是在域中的每個域控制器上單獨維護。要獲得使用者在域中的最後一次登錄的準確值,必須從域中的每個域控制器檢索使用者的 Last-Logon 屬性。檢索到的最大值是該使用者的真實上次登錄時間。

https://docs.microsoft.com/en-us/windows/desktop/adschema/a-lastlogon#remarks


最後登錄時間戳

每當使用者登錄時,都會從 DC 中讀取此屬性的值。如果該值較舊 [ current_time - msDS-LogonTimeSyncInterval],則更新該值。域功能級別提升後的初始更新計算為 14 天減去 5 天的隨機百分比。

https://docs.microsoft.com/en-us/windows/desktop/adschema/a-lastlogontimestamp


筆記:

  1. 如果您以程式方式檢索它們,則這兩個日期都儲存為FILETIME(在 .Net/PowerShell 中)。Int64
  2. PowerShell 還提供了一個LastLogonDate屬性。我更願意提供微軟特定的文件來確認這一點,但大多數消息來源都說,我的測試證實它是lastLogonTimestamp轉換為 l̲o̲c̲a̲l̲DateTime值。

引用自:https://serverfault.com/questions/734615