lastLogon和lastLogonTimestamp的区别
如何得到用户最近一次登陆域的时间?在Windows2003域中有2个属性:lastLogon和lastLogonTimestamp,那么这2个属性到底有什么作用呢?
lastLogon属性实时更新用户登录时间,但它不会从一个DC复制到另一个DC。假设一个用户登录到了DC A上,那么DCA上lastLogon既是用户的最近登录时间,但如果你在DCB上查询用户的最近登录时间,得到的结果将会是该用户没有登录过,尽管此时用户正登录在域上。
lastLogonTimestamp属性会从一个DC复制到另一个DC。因此,不论你查询域中任何一个DC,都会得到相同的结果。但是lastLogonTimestamp属性不反映确切的“最后登录时间”,为什么呢?想像一下,一群用户每天要登陆注销好几次,每次登陆状态都要复制到整个域的每台DC,这将可能导致相当大的复制流量。而通常情况下,我们仅仅关心那些在过去几周内没有登录过的“陈旧”帐号,而不需要一个精确到分秒的最后的登录状态。因此,lastLogonTimestamp隔14天才复制一次,从而减少复制流量,但同时也意味着,对任何用户来说,这个时间可能有14天的偏移。
因此,如果你想获得用户精确的最近登录时间,只能查询每一台DC的lastLogon属性,然后进行比对。但如果你仅仅想知了解过去的2周内是否有用户没有登录过,那么查询lastLogonTimestamp就好了。
使用VBScript查询lastLogonTimestamp有2个问题:
- lastLogonTimestamp是一个64-bit integer,VBScript不支持64位整数。但ADSI'sIADsLargeInterger接口可以将64为整数化成一对32位整数,这样VBScript就可以处理了。
- 当我们查询lastLogonTimestamp,得到的结果不是一个日期,而是一个数字,这个数字代表从1601年1月1日(星期一)0点到用户最后登录时间中间有多少个100纳秒。因此,我们还需要将这个数字转换为可以读懂的日期时间。
VBScript脚本如下:
- Set objUser =GetObject("LDAP://"& cn=Ken Myer, ou=Finance, dc=fabrikam,dc=com)
- Set objLastLogon =objUser.Get("lastLogonTimestamp")
- intLastLogonTime = objLastLogon.HighPart* (2^32) + objLastLogon.LowPart
- intLastLogonTime = intLastLogonTime / (60* 10000000)
- intLastLogonTime = intLastLogonTime /1440
- Wscript.Echo "Last logontime: " & intLastLogonTime +#1/1/1601#
- 绑定AD用户
- 使用Get方法获得lastLogonTimestamp,存储在IADsLargeInterger对象中。通常,我们不需要告诉ADSI使用什么接口,也不用创建IADsLargeInteger对象的实例,ADSI会自动识别。
- IADsLargeInteger对象使用HighPart存储64位整数的高32位,LowPart存储低32位。
- 1秒=10^9纳秒,therefore,1s=10^7×100ns,then,1m=60×10^7 ×100ns。
- 24h×60m=1440
- 我们已经将数字转换成天数,因此只要加上1601年1月1日,便可得到结果了。
原文:http://www.microsoft.com/technet/scriptcenter/topics/win2003/lastlogon.mspx
lastLogon和lastLogonTimestamp的区别的更多相关文章
- 用Get-ADComputer取非常用属性的值
由于GE使用的是Windows2003+Powershell2.0, 所以某些命令无法使用,比如想取lastLogon和lastLogonTimestamp这两个属性,在Powershell3.0下可 ...
- 禁用符合一定条件的AD对象 (含Filter参数的写法)
Get-ADComputer -Filter "(sAMAccountType -eq 805306369)" -SearchBase "OU=Computers,OU= ...
- 细说LastLogonTimeStamp
微软在Windows Server 2003中引入了LastLogonTimeStamp属性.管理员们可以利用这个属性查看用户或者计算机最近是否登录过域.根据这些信息,管理员可以对长时间没有登录的账户 ...
- c#与java的区别
经常有人问这种问题,用了些时间java之后,发现这俩玩意除了一小部分壳子长的还有能稍微凑合上,基本上没什么相似之处,可以说也就是马甲层面上的相似吧,还是比较短的马甲... 一般C#多用于业务系统的开发 ...
- jquery和Js的区别和基础操作
jqery的语法和js的语法一样,算是把js升级了一下,这两种语法可以一起使用,只不过是用jqery更加方便 一个页面想要使用jqery的话,先要引入一下jqery包,jqery包从网上下一个就可以, ...
- 【原】nodejs全局安装和本地安装的区别
来微信支付有2年多了,从2年前的互联网模式转变为O2O模式,主要的场景是跟线下的商户去打交道,不像以往的互联网模式,有产品经理提需求,我们帮忙去解决问题. 转型后是这样的,团队成员更多需要去寻找业务的 ...
- 探究@property申明对象属性时copy与strong的区别
一.问题来源 一直没有搞清楚NSString.NSArray.NSDictionary--属性描述关键字copy和strong的区别,看别人的项目中属性定义有的用copy,有的用strong.自己在开 ...
- X86和X86_64和X64有什么区别?
x86是指intel的开发的一种32位指令集,从386开始时代开始的,一直沿用至今,是一种cisc指令集,所有intel早期的cpu,amd早期的cpu都支持这种指令集,ntel官方文档里面称为&qu ...
- Java中Comparable与Comparator的区别
相同 Comparable和Comparator都是用来实现对象的比较.排序 要想对象比较.排序,都需要实现Comparable或Comparator接口 Comparable和Comparator都 ...
随机推荐
- 项目总结(四)--- 网络封包分析工具Charles
Charles是Mac下一款截取网络封包的工具,主要原理就是将自己设置成为熊网络访问的代理服务器,这样的话,所有的网络请求都得通过它来完成,从而实现网络封包的拦截分析. 这款软件功能整体来说还是非常强 ...
- iphone越狱还原
在Cydia 里安装Impactor 就行了 .在操作时需要全程联网: .请至少保证 % 的电量以防止在恢复过程出现断电的情况(建议将设备连接至电源): .设备将恢复至出厂状态,所有用户数据都将被清除 ...
- Hadoop 2.x HDFS新特性
Hadoop 2.x HDFS新特性 1.HDFS联邦 2. HDFS HA(要用到zookeeper等,留在后面再讲) 3.HDFS快照 回顾: HDFS两层模型 Namespa ...
- Linux命令--文件管理
1.ls ls -a 列出目录下是所有文件 ls -l 列出文件的详细信息 2.cd cd /root 进入更目录下的root文件夹 cd file 进入当前目录的file文件夹 cd .. 进入 ...
- .net学习笔记----HttpRequest类
一.HttpRequest的作用 HttpRequest的作用是令到Asp.net能够读取客户端发送HTTP值.比如表单.URL.Cookie传递过来的参数. 返回字符串的那些值就不说了,那些基本上都 ...
- VS读取文件或写入文件时出现中文乱码问题
最近我发现我从文本文档中读取文件处理后再存入新文本文档后,只要是有中文的都显示乱码了~~当我把中文去掉后一切又都正常了,而在我处理过程中,很确定没有对中文进行处理.使用记事本打开发现没有乱码现象,但是 ...
- poj 3517 约瑟夫环
最简单的约瑟夫环,虽然感觉永远不会考约瑟夫环,但数学正好刷到这部分,跳过去的话很难过 直接粘别人分析了 约瑟夫问题: 用数学方法解的时候需要注意应当从0开始编号,因为取余会等到0解. 实质是一个递推, ...
- 用sqlplus登陆数据库时,oracle 11g出现ORA-12514问题
转自:http://zhidao.baidu.com/question/144648216.html 启动服务 然后在sqlplus / as sysdba;执行启动startup nomount;a ...
- C语言标量类型(转)
在C语言中,枚举类型.字符型和各种整数的表示形式统一叫做标量类型. 当在C表达式中使用标量类型的值时,编译器就会自动将这些标识符转换为整数保存. 这种机制的作用是,在这些标量类型上执行的操作与整型上执 ...
- codeforces Round #263(div2) D. Appleman and Tree 树形dp
题意: 给出一棵树,每个节点都被标记了黑或白色,要求把这棵树的其中k条变切换,划分成k+1棵子树,每颗子树必须有1个黑色节点,求有多少种划分方法. 题解: 树形dp dp[x][0]表示是以x为根的树 ...