Многим администраторам Active Directory периодически приходится обращаться к тем или иным полям учетных объектов домена, содержащих метку времени (timestamp). Обычно такая задача возникает, когда нужно определить время последнего входа пользователя в домен, или последней регистрации компьютера в Active Directory. Эта информация содержится в поле Lastlogontimestamp.
Все бы хорошо, но проблема заключается в том, что формат времени, в котором хранится метка времени – UTC. Т.е. вместо привычной даты и времени вы увидите нечто следующее:
129639007827858663
Естественно, чтобы сразу понять какая это дата, нужно обладать определенными навыками и феноменальными вычислительными способностями головного мозга.
Однако выход есть и для простых системных администраторов, лично я использую следующие три методики:
1) Можно воспользоваться оснасткой adsiedit.msc, обновленной в Windows 7, которая автоматически преобразует UTC время в нормальную дату, однако это время скопировать не удастся, т.к. при редактировании оно опять будет в неудобоваримом формате.
2) Для преобразования значения Lastlogontimestamp в нормальный формат даты, можно воспользоваться утилитойw32tm.exe (мы уже пользовались этой командой, когда говорили о том, как с помощью w32tm настроить синхронизацию с внешним NTP сервером)
Синтаксис ее таков:
w32tm /ntte (lastLogon attribute value)
Например:
C:\>w32tm /ntte 129639007827858663
Вернет:
150045 03:33:02.7858663 — 24.10.2011 9:33:02
3) В случае необходимости массового преобразования значений Lastlogontimestamp из формата UTC, можно воспользоваться Excel. Формула преобразования будет выглядеть так
=IF(A1>0; DATE(1601;1; 1) +A1 /600000000/1440;" ")
, где A1 – ячейка, содержащая Timestamp
Мне лично нравится преобразование Lastlogontimestamp в нормальное время с помощью Excel, а в сочетании с методикой извлечения информации из Active Directory прямо в Excel , узнать время последнего входа в систему всех пользователей (компьютеров) домена стало еще проще, тем самым можно периодически очищать базу AD от устаревших записей.