针对AD管理的开发

最近赶了个项目,弄了AD管理的一块。于是好好研究了一下。
访问AD有很多种方法。
最简单的一种是采用vbs脚本(http://www.microsoft.com/technet/scriptcenter);
例如:创建一个AD账号(在活动目录根结点fabrikam.com下的management组织单位下创建用户MyerKen)

Set objOU = GetObject("LDAP://OU=management,dc=fabrikam,dc=com")
Set objUser = objOU.Create("User", "cn=MyerKen")
objUser.Put "sAMAccountName", "myerken"
objUser.SetInfo
AD中的对象是以“树”状进行存储的,每个对象都有对应的一个LDAP路径。
我们将上面的代码保存到C:\CreateAnAccount.vbs,运行cmd调用该vbs脚本wscript C:\CreateAnAccount.vbs后,账号就创建好了。去AD中看看。。。

微软的.NET Framework中也为我们提供了System.DirectoryServics命名空间,它当中提供了两个类System.DirectoryServices.DirectoryEntry和System.DirectoryServices.DirectorySearcher。其中DirectoryEntry类用于表示活动目录中任何一个对象。你可以通过DirectoryEntry对活动目录里的对象进行修改其属性、移动、重命名、列举其内部子对象、创建子对象、删除子对象、获取起父对象等等操作。
DirectorySearcher实例有两个主要方法:FindAll()和FindOne()。FindAll()是获取该对象的所有子对象集合;而FindOne()则获取查询到的第一个子对象。详细方法可以参照ADHelper类,不知道是哪位高人弄的,里面提供了针对AD的操作方法,遗憾的是有小小的错误,需要调试。

我们还可以使用SQLServer的视图来获取活动目录(AD)数据:ADSI是一套Microsoft作为访问任何目录的方法而推出的COM接口,利用ADSI为AD数据创建SQLServer视图。
方法如下:
一。使用ADSI与AD进行联接
1,打开SQL企业管理器,在服务器的“安全性”下的“链接服务器”右键,选“新建链接服务器”
2,属性设置
1),服务器名:ADSI
2),服务器类型选:其它数据源-OLE DB Provider for Microsoft Directory Services
3),产品名称:Active Directory Services 2.5
4),数据源:adsdatasource

ADSI联接创建成功。
二,创建视图,从AD中取用户的LDAP路径
CREATE VIEW dbo.MemNamePath
AS
select
substring(adspath, charindex('CN=',adspath)+3 , charindex(',',adspath) - charindex('CN=',adspath)-3 ) as MemberName,
substring(adspath, charindex('CN=',adspath), len(adspath) -charindex('CN=',adspath) +1 ) as MemberPath

from  

OPENQUERY(ADSI,'SELECT *  FROM ''LDAP://fabrikam.com/ DC=fabrikam,DC=com'' where objectClass=''user'' ')

where charindex(',',adspath) - charindex('CN=',adspath)-3 >0

-----------------------------------------------------------------------------
在对AD的研究当中,发现竟然没有对AD账号的锁定和解锁功能。

posted on 2006-06-16 17:00  山 前  阅读(505)  评论(0编辑  收藏  举报