活动目录lastLogonTimestamp-将Integer转换为Date

时间:2018-09-10 15:12:23

标签: active-directory data-conversion powerquery

有人能帮助我从Active Directory转换lastLogon和lastLogonTimestamp吗?我使用Power Query提取数据,并以我自己的用户名提取数据,数据返回如下:

[users.lastLogonTimestamp]=131804496023891686

[users.lastLogon]=131808141012537325

我在Microsoft Docs上找到了该页面,该页面的内容非常清楚:

  

此值存储为一个大整数,代表整数   自1601年1月1日(UTC)起,间隔为100纳秒。零值   表示上次登录时间未知。

但是我正在努力获得合乎逻辑的结果。我尝试将纳秒转换为天,然后将天整数添加到起始日期“ 1/1/1601”结果中。由于我一直在积极登录,因此应该可以在今天的日期'09 / 10/2018'附近获得日期结果。

131804496023891686 / 86,400,000,000,000 

= 1525.5150002765241435185185185185

_

1525 + '1/1/1601' = Wednesday, March 6, 1605  

-参考:

1)https://www.calculateme.com/time/nanoseconds/to-days/

2)https://www.timeanddate.com/date/dateadded.html?m1=01&d1=01&y1=1601&type=add&ay=&am=&aw=&ad=1525&rec=

3)https://docs.microsoft.com/en-us/windows/desktop/adschema/a-lastlogon

2 个答案:

答案 0 :(得分:0)

好吧,这是一个 List<SomeClass> someList = new List<SomeClass>(); 的时刻……答案正盯着我。我错过了用DOH!而不是100 nanoseconds表示的事实。

1 nanosecond

_

(131804496023891686*100) / 86,400,000,000,000 

152551.50002765241435185185185185

注意:所以这个结果实际上是将来的3天...并不完美,但是我真正想要的只是“过去30天的有效帐户”,因此我认为这是可以接受的。

这篇文章也很有帮助-http://www.selfadsi.org/ads-attributes/user-lastLogonTimestamp.htm

答案 1 :(得分:0)

因此,对于PowerShell,我将所有内容汇总如下


(Get-Date '1601-01-01').AddDays([long]::parse($objItem.lastlogon)*100/86400/1000/1000/1000)