通过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中的账户的功能,鉴于公司网络环境,这里不方便进行测试了,读者如果有条件可以自己尝试。


本文转自Jaxu博客园博客,原文链接:http://www.cnblogs.com/jaxu/archive/2009/06/18/1505849.html,如需转载请自行联系原作者


相关文章
|
9月前
|
存储 SQL 开发框架
可视化查询(sp_helptext)——快速查询包含指定字符串的存储过程(附源码)
可视化查询(sp_helptext)——快速查询包含指定字符串的存储过程(附源码)
|
7月前
|
存储 JSON BI
如何使用事物码 SAT 查找某个 SAPGUI 屏幕字段对应的后台存储数据库表的名称试读版
如何使用事物码 SAT 查找某个 SAPGUI 屏幕字段对应的后台存储数据库表的名称试读版
53 0
|
4月前
|
JSON 安全 数据安全/隐私保护
WebOffice 网页版在线 Office 的 Word 文档权限控制,限制编辑,只读、修订模式、禁止复制等
在一些在线 Office 文档中,有很多重要的文件需要保密控制,比如:报价单、客户资料等数据,只能给公司成员查看,但是不能编辑,并且不能拷贝,防止重要资料外泄。可以通过猿大师办公助手的在线 Office 的文档编辑权限来解决这些问题!
87 1
|
6月前
|
SQL 存储 API
SAP CRM 系统使用 API 和 open sql 读取订单长文本的两种方式比较
SAP CRM 系统使用 API 和 open sql 读取订单长文本的两种方式比较
43 0
|
存储 数据安全/隐私保护 计算机视觉
python 实现dcmtk关联pacs功能 推送下拉影像
1、dcmtk关联pacs的参数介绍 2、dcmtk命令介绍 3、演示工具的功能 4、说明使用的技术 5、遇到的问题 6、工具目前存在的缺点
231 0
python 实现dcmtk关联pacs功能 推送下拉影像
【自然框架】之通用权限(八):权限到字段(列表、表单、查询)
 通用权限想要写的文章目录:(这是第八章)   1、 简介、数据库的总体结构2、 介绍人员表组3、 介绍组织结构表组4、 介绍角色表组5、 介绍“项目自我描述表组”6、 权限到节点7、 权限到按钮8、 权限到列表(表单、查询)9、 权限的验证10、 资源方面的权限11、 角色管理的程序(给客户用的)12、 权限下放13、 个性化设置A、 【自然框架】之通用权限(外传):杂谈     列表 myGrid 先说一下myGrid,我会根据Manage_FunListCol表和Manage_Columns表的内容,绘制出来一个table,就是的HTML。
877 0