Active Directory 中的 lastLogon 與 lastLogonTimestamp
一名員工離開了公司。我試圖找出他的 AD 帳戶最後一次登錄的時間——是在解僱之前還是之後。
使用者屬性視窗中有這兩個屬性:lastLogon和lastLogonTimestamp。lastLogon日期早於解僱日期,但lastLogonTimestamp日期晚於解僱日期(因此在這種情況下,我們會遇到安全問題)。
如何知道,這些屬性中的哪一個顯示了實際的最後一個 AD 帳戶登錄時間?它們之間有什麼區別?
使用最新的屬性。
Lastlogon 僅在執行身份驗證的域控制器上更新,不會複製。
LastLogontimestamp 被複製,但預設情況下僅當它比之前的值早 14 天或更長時間時。
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
筆記:
- 如果您以程式方式檢索它們,則這兩個日期都儲存為
FILETIME
(在 .Net/PowerShell 中)。Int64
- PowerShell 還提供了一個
LastLogonDate
屬性。我更願意提供微軟特定的文件來確認這一點,但大多數消息來源都說,我的測試證實它是lastLogonTimestamp
轉換為 l̲o̲c̲a̲l̲DateTime
值。