TL; DR - если вы хотите самое точное время входа в систему, вы должны запросить lastLogon
атрибут со всех контроллеров домена. Если допустимое отклонение составляет ± 19 дней, то вы можете просто прочитать данные lastLogonTimestamp
с ближайшего контроллера домена.
lastLogon
Этот атрибут не реплицируется и поддерживается отдельно на каждом контроллере домена в домене. Чтобы получить точное значение для последнего входа пользователя в домен, атрибут Last-Logon для пользователя должен быть получен с каждого контроллера домена в домене. Самое большое полученное значение - это время последнего входа в систему для этого пользователя.
https://docs.microsoft.com/en-us/windows/desktop/adschema/a-lastlogon#remarks
lastLogonTimestamp
Всякий раз, когда пользователь входит в систему, значение этого атрибута читается из DC. Если значение старше [current_time - msDS-LogonTimeSyncInterval
], значение обновляется. Первоначальное обновление после повышения функционального уровня домена рассчитывается как 14 дней минус случайный процент 5 дней.
https://docs.microsoft.com/en-us/windows/desktop/adschema/a-lastlogontimestamp
Ноты:
- Обе даты сохраняются как
FILETIME
( Int64
в .Net / PowerShell), если вы извлекаете их программно.
- PowerShell также предоставляет
LastLogonDate
свойство. Я бы предпочел предоставить конкретную документацию Microsoft, чтобы подтвердить это, но большинство источников говорят, и мое тестирование подтверждает, что оно lastLogonTimestamp
преобразовано в DateTime
значение l̲o̲c̲a̲l̲ .