TL; DR - Nếu bạn muốn thời gian đăng nhập chính xác nhất, bạn phải truy vấn lastLogon
thuộc tính từ tất cả các bộ điều khiển miền. Nếu dung sai ± 19 ngày là chấp nhận được, thì bạn chỉ cần đọc lastLogonTimestamp
từ bộ điều khiển miền gần nhất.
LastLogon
Thuộc tính này không được sao chép và được duy trì riêng trên mỗi bộ điều khiển miền trong miền. Để có được giá trị chính xác cho lần đăng nhập cuối cùng của người dùng trong miền, thuộc tính Đăng nhập cuối cùng cho người dùng phải được truy xuất từ mọi bộ điều khiển miền trong miền. Giá trị lớn nhất được truy xuất là thời gian đăng nhập cuối cùng thực sự cho người dùng đó.
https://docs.microsoft.com/en-us/windows/desktop/adschema/a-lastlogon#remarks
lastLogonTimestamp
Bất cứ khi nào người dùng đăng nhập, giá trị của thuộc tính này được đọc từ DC. Nếu giá trị cũ hơn [current_time - msDS-LogonTimeSyncInterval
], giá trị được cập nhật. Bản cập nhật ban đầu sau khi tăng mức chức năng miền được tính là 14 ngày trừ phần trăm ngẫu nhiên trong 5 ngày.
https://docs.microsoft.com/en-us/windows/desktop/adschema/a-lastlogontimestamp
Ghi chú:
- Cả hai ngày được lưu trữ dưới dạng
FILETIME
( Int64
trong .Net / PowerShell) nếu bạn truy xuất chúng theo chương trình.
- PowerShell cũng cung cấp một
LastLogonDate
tài sản. Tôi muốn ưu tiên cung cấp tài liệu cụ thể của Microsoft để xác nhận điều này, nhưng hầu hết các nguồn đều nói và thử nghiệm của tôi xác nhận rằng đó là giá trị được lastLogonTimestamp
chuyển đổi thành DateTime
giá trị l̲o̲c̲a̲l̲ .