понедельник, 5 декабря 2011 г.

Делаем читабельными поля LastLogon or LastLogonTimestamp полученные при помощи csvde

Мне дали задачу создать отчет содержащий следующую информацию: Имя пользователя, OU, и Время последнего входа в систему. Достаточно легко, правда? Я вошел в систему к одному из серверов как администратор и выполнил:

F:\ csvde -r "(objectClass=user)" -f output.csv -l cn,givenName,sn,n,ou,lastLogon

Это работает отлично, но даты в Excel шокировали. "Нормальное"  время это число секунд с полуночи 1/1/1970. А время в Active Directory в формате UTC, 64битное число миллисекунд после 1/1/1601 деленное на 100.


Формула для конвертации Active Directory LastLogon or LastLogonTimestamp:

=IF(C2>0; 0,C2/(8,64*10^11) - 109205, "")

  • C2 - ячейка которая содержит в себе Timestamp из AD.

  • Конструкция If() служит для сокрытия значений для тех пользователей, которые никогда не логинились

  • (8.64*10^11) - число миллисекунд в дне деленное на 100.

  • 109205 - число дней прошедших с 1601 по 1900. (Напоминаю, 1900 в excel это начало отчета для дат)


Вот и все. Вставляем формулу и меняем формат ячейки на "Дата". Время будет в GMT.

Комментариев нет: