目前整个域内的帐号有近50万,10个子域,一个跟域,想导出账号出来不是件容易的事,并且LDAP查询策略的限制,只能一个OU一个OU的去导,因此写了这样的一个程序,便利GC的所有OU,逐层去读取帐户

Set rootDSE = GetObject("http://www.cnblogs.com/buyimozi/admin/ldap://rootDSE/")
BaseDN = rootDSE.Get("defaultNamingContext")
DC= replace(BaseDN,"DC=",",")
DC= replace(DC,",,",".")
DC=right(DC,len(DC)-1)

Set objConnection = CreateObject("ADODB.Connection")
objConnection.Provider = "ADsDSOObject"
objConnection.Open "Active Directory Provider"
Set objCommand = CreateObject("ADODB.Command")
Set objCommand.ActiveConnection = objConnection
Set objCommand1 = CreateObject("ADODB.Command")
Set objCommand1.ActiveConnection = objConnection
on error resume next
wscript.echo "Begin:"

objCommand.CommandText = "<GC:// "& DC & "/"    & BaseDN & ">;(&(|(objectclass=organizationalUnit)(objectclass=Container)(objectclass=domain)));name,distinguishedName,ADsPath;onelevel"
 Set objRecordSetTop = objCommand.Execute
 If Err.number<>0 Then
 MsgBox "没有找到ou"  & TARGET_OU
 End If

If objRecordSetTop.RecordCount>0 Then'顶层OU
 Do Until objRecordSetTop.EOF
  objectname=objRecordSetTop.Fields("name")
  distinguishedName=objRecordSetTop.Fields("distinguishedName")
  ADsPath= objRecordSetTop.Fields("ADsPath")   
       searchChildOU  distinguishedName    
  objRecordSetTop.MoveNext
 Loop
Else
 wscript.echo "<GC:// "& DC & "/"    & BaseDN  & " IS NULL"
End If
 
wscript.echo "总计输出账号为:" & i

Function searchChildOU(OUdistinguishedName)
OUdistinguishedName=replace(OUdistinguishedName,"/","\/")'将“/”做转换
 objCommand.CommandText = "<GC://" & DC & "/" &   OUdistinguishedName  & ">;(&(|(objectclass=organizationalUnit)(objectclass=Container)));cn,distinguishedName,ADsPath;onelevel"
 outputInformation  "GC://" & DC & "/" & OUdistinguishedName,outputFilePath  '导出当前OU下的账户
    Set objRecordSet = objCommand.Execute
 If objRecordSet.RecordCount>0 Then
  Do Until objRecordSet.EOF
   searchChildOU  objRecordSet.Fields("distinguishedName")'此处用到递归查找OU的方法
   objRecordSet.MoveNext
  loop
 End If
End Function
Function outputInformation(adspath,outputFilePath)
'根据OU的adspath导出该OU下的所有账号信息
Set OU = GetObject(adspath)
OUdistinguishedName=OU.distinguishedName
OUdistinguishedName=replace(OUdistinguishedName,"/","\/")
Wscript.Echo    "导出:" & OUdistinguishedName    
    Set adoCommand = CreateObject("ADODB.Command")
                                Set adoConnection = CreateObject("ADODB.Connection")
                                adoConnection.Provider = "ADsDSOObject"
                                adoConnection.Open "Active Directory Provider"
                                adoCommand.ActiveConnection = adoConnection
                                strBase = "<GC://" & DC & "/" &   OUdistinguishedName  & ">"
                                strFilter = "(&(objectCategory=person)(objectClass=user))"
                                strAttributes = "distinguishedName,ADsPath,lastLogonTimeStamp" & ";onelevel"
                                strQuery = strBase & ";" & strFilter & ";" & strAttributes
                                adoCommand.CommandText = strQuery
                                adoCommand.Properties("Page Size") = 10000000
                                adoCommand.Properties("Timeout") = 60
                                adoCommand.Properties("Cache Results") = False
                                Set adoRecordset = adoCommand.Execute
                                Do Until adoRecordset.EOF
                                   On Error Resume Next
                                    adspath=adoRecordset.Fields("adspath")
                                    ShowMSG  adspath
                                 adoRecordset.MoveNext
        i=i+1
                                Loop
End function

转载于:https://www.cnblogs.com/buyimozi/archive/2009/09/02/1558920.html

查询GC得到森林里主域和子域的帐号相关推荐

  1. 什么是主域、子域_什么是子域?

    什么是主域.子域 Subdomain is a term used in the internet area in order to describe the children of a domain ...

  2. 微信小游戏:主域子域

    主域 通常我们所有的功能在主域中就可以完成,主域中有游戏开发所需的所有接口.但是当我们想要做需要访问用户好友数据信息的时候,就需要用到开放数据域中的接口,开放数据域中的接口只能在子域中访问,这也就是我 ...

  3. java ldap 登陆AD域 查找某个帐号 查找某个组织单位

    2019独角兽企业重金招聘Python工程师标准>>> 登陆域,在网上很多 public static boolean loginAD(String adName, String a ...

  4. 【AD】取消普通域用户帐号加域权限授权特定普通域用户加域权限

    通常来说,没有做什么特别的设定的话,都是手动加域,且使用的是管理员帐号,这种情况下是有风险的,容易被人记忆密码.所以,如果可以设置一个普通用户帐号,专门用来执行加域操作,就会降低此类风险.其实默认情况 ...

  5. 主域无法开机,备份域升级成主域操作

    在多域控制器环境下,主域控制器由于硬件故障突然损坏,而又事先又没有做好备份,如何使额外域控制器接替它的工作,使Active Directory正常运行,并在硬件修理好之后,如何使损坏的主域控制器恢复. ...

  6. 父域与子域之的信任关系

    搭了一个测试环境,做一个父.子域间信任关系的测试,过程如下: 两台测试服务器,主域为primary.com,子域为child.primary.com 客户机Clientpri加入父域,客户机Clien ...

  7. withCredentials--相同主域跨域解决方法

    主域相同,而子域不同,存在跨域问题.在高版本浏览器下,可以设置withCredentials来解决. xhrFields: {withCredentials: true} 低版本浏览器标准IE6. I ...

  8. 主域控宕机无法恢复后,如何配置辅助域控继续工作

    情况如下: 系统基础结构如下:一个主域控,一个辅助域控且都安装AD与DNS集成区. 如果:   主域控宕机且无法恢复,请问辅助域应做些什么才能替代主域控继续工作? 第一步:在辅助域控上清除主域控AD数 ...

  9. 主域控崩溃后,备域如何快速接管主域控制器

    以软件VMware16为1台,镜像WINServer2016为4台为例 环境:主域控崩溃后,备域如何快速接管主域控制器? 域名:aaa.com 主域:linjiaci01,IP地址:192.168.1 ...

最新文章

  1. 【收集】EJB3.0的各应用服务器提供的JNDI接口
  2. 横流式冷却塔计算风量_冷却塔空气动力是怎么计算的?
  3. 找回创新能力 才是苹果的救命稻草
  4. P1967,ssl2267-货车运输【树上倍增LCA,最小生成树变形kruskal】
  5. 【codecombat】 试玩全攻略 第十六关 近战
  6. jQuery.Validate.js验证大表单的优化
  7. 安装多个mysql实例(debian版本)
  8. 74LS138的结构
  9. (转)所谓“降维打击”到底什么意思?
  10. 光敏电阻、压敏电阻、热敏电阻记录整理
  11. 11的倍数c语言,11-1,5,11,12的倍数(容斥原理)
  12. CCNA-思科网络基础(IP地址 MAC地址 DNS DHCP PING )
  13. 学习日常英语(每天更新10+—)
  14. volumetric obscur ence
  15. 新高考增值评价系统业务简单介绍(超详细,图文并茂)
  16. 利用侧壁高阻结构调控Micro-LED中电流的横向扩展
  17. 控制工程基础学习笔记-第5章 控制系统的稳定性分析
  18. 转发:我收到一份《中国焦虑图鉴》
  19. httprunnermanager运行
  20. php股东投资饼状图,百分比饼状图怎么做

热门文章

  1. python join()函数
  2. 虚拟IO服务器,虚拟IO服务器VIOS概念.doc
  3. 笔记-企业管理知识-知识管理
  4. Openlayers中使用Image的rotation实现车辆定位导航带转角(判断车辆图片旋转角度)
  5. Jquery tmpl模板中if条件有多个时的写法
  6. Chrome 浏览器调试移动端
  7. 惊呆!学习MySQL真的这一篇就够了!太全了
  8. Java反射,从0开始
  9. HTML5 速查列表
  10. Flutter面试常见开发问题