AD 查询操作
關於LDAP的查詢:
1、查询种类:
A、(objectCategory=computer)
B、(objectCategory=group)
C、(objectCategory=user)
D、(&(objectCategory=person)(objectClass=user))
E、(objectcategory=contact)
2、语法基础
=---------------------(EQUALTO)等于
eg:(givenName=Wendy)
&-----------------------(logicalAND)和
eg:(&(givenName=Wendy)(l=Q13000000))
!-------------------------(logicalNOT)非
eg:(!givenName=Wendy)
*----------------------(wildcard)通配符
eg:(givenName=We*)
|---------------OR或者
eg:(|(l=Q1300)(l=Q1200))
eg:(&(givenName=Wen*
)(|(l=Q1300*)(l=Q1200*)))
◆查找被disable的user(拥有信箱)
(&(msExchUserAccountControl=2)(!msExchMasterAccountSID=*))
◆查询被disable的用户(所有)
(&(objectCategory=person)(objectClass=user)(userAccountControl:1.2.840.113556.1.4.803:=2))
◆查询有描述的计算机
(&(objectCategory=computer)(description=*))
◆查询有描述的组
(&(objCategory=group)(description=*))
◆查询所有的组-----开头为PCQ或者PSH
(&(objectCategory=group)(|(cn=PSH*)(cn=PCQ*)))
◆查询所属于群组的用户
(&(objectCategory=user)(|(memberOf=CN=Pin,OU=Pry,OU=Function,OU=Groups,DC=WEN,DC=COM)(memberOf=CN=PP,OU=Pry,OU=Function,OU=Groups,DC=WEN,DC=CORM)))
1、查询logonscript路径不是wendy.vbe的用户:
(&(!scriptPath=wendy.vbe)(objectCategory=user))
2、查詢被disabled的計算機
(&(objectCategory=person)(objectClass=user)(userAccountControl:1.2.840.113556.1.4.803:=2))
3、查詢時間戳早於2012年7月30日的電腦
(&(objectCategory=computer)(lastLogonTimestamp<=129880800000000000))
4、查询最后一次修改密码时间小于我们要查询的时间以及最后一次修改密码时间不为0的用户
(objectcategory=user)(objectclass=user)(!pwdlastset<=0)
(如果用户pwdlastset属性为0,说明用户属性中勾选了“下一次登录必须修改密码”的选项)
一、参考:细说LastLogonTimeStamp
LastLogonTimeStamp的值会在所有域控制器间复制。所以管理员只要从一个域控制器上就能得到用户上次登录的信息。
http://blogs.technet.com/b/apgceps/archive/2011/10/25/details-about-lastlogontimestamp.aspx
二、参考:LastLogonTimeStamp的值的计算方法
2012年7月30對應于129880800000000000
在活動目錄中存儲的時間戳和我們日常使用的時間戳是不一樣的,是從1601年1月1號開始所經過的100纳秒的个数,比如修改密码时间的属性lastpwdset,用户最后一次登录认证的属性lastlogon都是以这种形式来存在的
例如:我们要把2012年7月30日0时转换为活动目录时间戳
首先我们要计算从从1601年1月1号0时到2012年7月30日0时所经过的秒数。这个我们通过工具来计算
如上图,通过这个网站可以计算出他们之间所经过的秒数为:12988080000秒
之后再把单位转换为纳秒
12988080000 秒* 1000000000 /= 12988080000000000000 纳秒 |
最后转换为活动目录时间戳
12988080000000000000 纳秒/ 100 纳秒= 129880800000000000 |
好了,得到的一串数字就是活动目录时间戳,我们来验证一下是否正确,看是否能把它转换成标准时间,转换会标准时间就比较简单了,通过windows自带的命令就可以做到
看图中说明我们的时间戳已经转换过来了
PS:由于使用这个命令转换出来的时间为GMT时间格式,
他会自动根据我们当前计算机的时区再做一次计算,得出2013/6/18:00:00的时间,
因为我们转换前活动目录时间戳的时区就是我们当前的时区,所以可以忽略掉他自动转换的时区。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· go语言实现终端里的倒计时
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· 分享 3 个 .NET 开源的文件压缩处理库,助力快速实现文件压缩解压功能!
· Ollama——大语言模型本地部署的极速利器
· 使用C#创建一个MCP客户端
· 分享一个免费、快速、无限量使用的满血 DeepSeek R1 模型,支持深度思考和联网搜索!
· Windows编程----内核对象竟然如此简单?
2017-09-24 利用ASP.NET操作IIS (可以制作安装程序)