zoukankan      html  css  js  c++  java
  • 通过VBA检索AD中的用户

          VBA作为一种被用在Microsoft Office产品中的脚本语言,功能实际上是很强大的,这要归功于它继承了Visual Basic的很多优良传统,如我们可以在VBA工程中像VB 6一样引入类库或ActiveX控件。当然,你在VB 6中使用的组件或控件也完成可以在VBA中使用,例如日期输入组件。
    6-18-2009 2-18-43 PM

            VBA支持ADO,这也意味着我们可以在VBA中操作数据库,包括SQL Server、Access等。正因为如此,你可以尝试着在Excel中编写一个VBA程序来将Excel作为一个用于数据同步的中间件,该中间件可以用来同步应用程序与后台数据库中的数据,并在其中做一些处理。这是完全可以做到的!我在之前的一个项目中就曾做过这样的例子,我们甚至通过Excel同步了SQL Server和Sharepoint List之间的数据(这个我会在随后的一些中再做介绍)。

          ADO的功能也很强大,我们可以在其中执行Windows脚本,经常使用的就是通过它来管理Windows Server的AD,如遍历AD中的账户,批量修改AD中的账户等,这已经没有什么好奇怪的了,你完全可以在Windows上使用记事本编写一个vbs脚本,然后直接使用它来管理你服务器上的AD,当然,基于安全考虑,这些都是需要适当的执行权限的。这些工作通过VBA也可以完成,并且在Excel中你会发觉有的时候很方便,如借用Excel现有的UI来展现所操作的数据;基于所查询的数据来生成图表;使用Excel提供的功能修改数据;遍历和组织数据的方便性等等...

          下面我给出一个示例。在新的Sheet中添加一个ActiveX Button,然后添加下面的代码。

    Private Sub CommandButton1_Click()
       
    On Error Resume Next

       
    Const ADS_SCOPE_SUBTREE = 2
        
       
    Set objConnection = CreateObject("ADODB.Connection")
       
    Set objCommand = CreateObject("ADODB.Command")
        objConnection.Provider
    = "ADsDSOObject"
        objConnection.Open
    "Active Directory Provider"
       
    Set objCommand.ActiveConnection = objConnection
        
        objCommand.Properties(
    "Page Size") = 1000
        objCommand.Properties(
    "Searchscope") = ADS_SCOPE_SUBTREE
        
        objCommand.CommandText
    = _
           
    "SELECT Name FROM 'LDAP://dc=XXX,dc=com' WHERE objectCategory='user'" 'search all users from the domn XXX
        Set objRecordSet = objCommand.Execute
        objRecordSet.MoveFirst
        
       
    Dim currCell As Range
       
    Set currCell = Range("A1")
        
       
    Do Until objRecordSet.EOF
            currCell.Value
    = objRecordSet.fields("Name").Value
           
    Set currCell = currCell.Offset(1, 0)
            objRecordSet.MoveNext
       
    Loop
    End Sub

          代码中我使用了一个假象的域名称XXX,读者如果想要测试可将其改成真实的域名称。我们使用ADO对所指定的域进行了用户查询,并将域中所有用户的Name依次输出到Excel当前Sheet的第一列中,下面是输出结果的部分截图。

    6-18-2009 2-46-32 PM

          有关如何通过脚本操作AD,读者可以参考一下Microsoft的官方文档http://www.microsoft.com/technet/scriptcenter/guide/sas_usr_ykxh.mspx?mfr=true

          如果权限允许,稍微修改一下上面的代码,完全可以实现批量修改AD中的账户的功能,鉴于公司网络环境,这里不方便进行测试了,读者如果有条件可以自己尝试。

  • 相关阅读:
    PHP学习心得(八)——运算符
    PHP学习心得(九)——函数
    PHP学习心得(十)——控制结构
    PHP学习心得(七)——常量
    PHP学习心得(六)——变量
    PHP学习心得(五)——类型
    PHP学习心得(四)——基本语法
    PHP学习心得(三)——处理表单
    PHP学习心得(二)——实用脚本
    PHP学习心得(一)——简介
  • 原文地址:https://www.cnblogs.com/jaxu/p/1505849.html
Copyright © 2011-2022 走看看