分享
 
 
 

如何用ADSI实现自动化的活动目录操作

王朝other·作者佚名  2008-05-19
窄屏简体版  字體: |||超大  

网管们都应该知道,脚本对于减轻工作量来说是非常有用的。通过脚本,以前需要手工数小时才能完成的工作,现在只需要完全交给电脑自动处理就可以了。比如建立一个Visual Basic Scripting Edition (VBS),Windows Management Instrumentation (WMI)就可以自动完成Windows系统中的多种任务。

而我们今天介绍的另一种脚本技术可以实现活动目录的自动化操作,这就是活动目录访问接口(Active Directory Service Interfaces ,ADSI)。使用ADSI,你可以完成任何通过Active Directory GUI界面可以完成的工作,比如创建、删除、修改目录对象(容器、用户、组,等等)。另外,ADSI可以通过查询目录来快速获得目录信息。

下面我就来介绍一下ADSI以及它对活动目录的基本操作。

绑定到目录

和使用Visual Basic 的GetObject方法绑定到WMI一样,你也可以基于Lightweight Directory Access Protocol (LDAP)使用GetObject方法绑定目录。在ADSI脚本中,首先需要指定一个LDAP驱动,这实际上是一个名为adsldp.dll的文件,只不过我们要加一个“LDAP:”作为前缀。这和我们使用WMI脚本的方法类似,只不过在WMI脚本中前缀变成了“Winmgmts:”。另外,你必须指定目录对象的路径,比如域、部门单元、用户组或者用户。LDAP驱动和目录路径结合起来被称为AdsPath。在这段代码中,我们会将LDAP和acme.com 域的Marketing单元绑定在一起。

在代码中我们会注意到,第一,AdsPath是被引号和括号包围的。我们在编辑ADSI脚本或其他任何脚本时,都应该使用纯文本编辑器,比如Notepad,因为在Microsoft Word中带有智能标记功能,由它编写出来的脚本代码不会被主机识别出来。第二,注意我们是如何设计对象路径的。所有域名都采用了两个字符来标识,而这两个字符并不是随便写的,它们被称为Attribute Type。它与Object Class一起使用,用来标明是属于容器对象还是叶子对象。表A列出了这种表示方法的含义。

举个例子,假如我们希望绑定westcoast.acme.com域中Finance OU里面Managers组的成员Mary,我们可以使用这段代码。

另外,对于用户和组来说,cn属性类型也表示容器,比如"Users"、"Computers"、"Domain Controllers"等。

绑定之后

正如我们所期望的,当我们将对象绑定到活动目录后,就可以执行四种基本的操作了。每种操作都由一种方法实现,如表B所示。

如果打算使用其中任何一种方法,还需要在语句中以参数的形式提供相应的信息,比如“创建什么内容?”之类的。假设现在我们要在acme.com的Marketing OU中创建一个名为MSmith的用户,我们可以使用这段代码 。

代码中前两行表示告诉脚本要绑定到活动目录,然后建立一个名为MSmith 的User对象类。接下去两行看起来可能会有些陌生,下面我就来解释一下。对于一个用户,他具有多种属性可以进入存储在活动目录的数据库(查看User属性就能看到了),比如电话号码、姓名、办公室位置等。在这些属性中,只有用户名即代码中的“sAMAccountName”是建立用户所必须的。因此第三行使用Put方法修改第二行所建立的用户的属性。当然,我们也可以再添加一些别的属性。

第四行是用来将修改(创建对象或修改属性等动作)提交给活动目录的,它使用了一个叫做SetInfo的方法。如果没有这最后一行代码,脚本不会对活动目录产生任何影响。

我们还可以使用Get方法获取活动目录对象的属性。通过这段代码,我们显示了Marketing OU中的description属性。

rootDSE

在上面任何一个代码范例中,我们都没有指定服务器名,这是由于ADSI支持“无服务器绑定”,也就是我们不需要输入域控制器的名称。借由这种特性,我们其实也不必输入AdsPath。当然我们可以将脚本绑定到根目录,也就是所谓的Root Directory Service Entry (rootDSE),然后利用它的属性绑定到当前的域。

具体的做法是通过rootDSE中一个被称作defaultNamingContext的属性找到AdsPath,然后再利用AdsPath绑定到当前域。这里的“当前域”是指用户登录的域。假设当前域为westcoast.acme.com,这段代码 显示了如何不注明AdsPath即可进行绑定。

在代码中,我们首先绑定到rootDSE,然后利用Get方法获得了defaultNamingContext属性并将其赋值给一个字符串变量。最后我们使用这个字符串变量作为域名的引用。在这个例子中,字符串变量strADsPath的实际值应该是LDAP://DC=westcoast, DC=acme, DC=com 。

绑定变量到rootDSE的好处在于,不管当前的域是什么都可以使用同一脚本。为了显示这种方法的实用价值,我们在自己的活动目录实验室中进行了测试,目标是在三个不同的域中各建立500个用户,其用户名分别为User1、User2......以此类推。你可以想象,假如采用活动目录的GUI界面,我们需要花费多长的时间才能创建完这些用户。而当我们在每个域中都采用这段脚本,你会发现完成这个任务是一件相当简单的事情。

实际上,有关ADSI的内容远不止我们在这篇文章中所涉及到的。想获取更多有关 ADSI的知识,请访问微软MSDN网站上的 "Using Active Directory Service Interfaces" 。

 
 
 
免责声明:本文为网络用户发布,其观点仅代表作者个人观点,与本站无关,本站仅提供信息存储服务。文中陈述内容未经本站证实,其真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。
2023年上半年GDP全球前十五强
 百态   2023-10-24
美众议院议长启动对拜登的弹劾调查
 百态   2023-09-13
上海、济南、武汉等多地出现不明坠落物
 探索   2023-09-06
印度或要将国名改为“巴拉特”
 百态   2023-09-06
男子为女友送行,买票不登机被捕
 百态   2023-08-20
手机地震预警功能怎么开?
 干货   2023-08-06
女子4年卖2套房花700多万做美容:不但没变美脸,面部还出现变形
 百态   2023-08-04
住户一楼被水淹 还冲来8头猪
 百态   2023-07-31
女子体内爬出大量瓜子状活虫
 百态   2023-07-25
地球连续35年收到神秘规律性信号,网友:不要回答!
 探索   2023-07-21
全球镓价格本周大涨27%
 探索   2023-07-09
钱都流向了那些不缺钱的人,苦都留给了能吃苦的人
 探索   2023-07-02
倩女手游刀客魅者强控制(强混乱强眩晕强睡眠)和对应控制抗性的关系
 百态   2020-08-20
美国5月9日最新疫情:美国确诊人数突破131万
 百态   2020-05-09
荷兰政府宣布将集体辞职
 干货   2020-04-30
倩女幽魂手游师徒任务情义春秋猜成语答案逍遥观:鹏程万里
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案神机营:射石饮羽
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案昆仑山:拔刀相助
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案天工阁:鬼斧神工
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案丝路古道:单枪匹马
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:与虎谋皮
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:李代桃僵
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:指鹿为马
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案金陵:小鸟依人
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案金陵:千金买邻
 干货   2019-11-12
 
推荐阅读
 
 
 
>>返回首頁<<
 
靜靜地坐在廢墟上,四周的荒凉一望無際,忽然覺得,淒涼也很美
© 2005- 王朝網路 版權所有