有人能帮助我从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/
3)https://docs.microsoft.com/en-us/windows/desktop/adschema/a-lastlogon
答案 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)