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̲ .