注册 | 登录 忘记密码? 51cto首页 | 博客 | 论坛 | 招聘
热点文章 一个黑客与一个电脑白痴的..
 帮助

利用脚本批量添加域用户账户


版权声明:原创作品,如需转载,请与作者联系。否则将追究法律责任。

以下内容摘自笔者编著的《网管员必读——网络管理》(第2版)一书:

2.4.6 利用脚本批量添加域用户账户

 以上两种方法是比较常用的批量用户账户添加方法,但是不够灵活(不可以设置密码),而且在添加用户数量多时,输入的工作量也比较大。本节所介绍的WSH脚本方法相对来说,工作量比较小,但难度却要高许多,需要懂得一些基本的脚本语言。 仅作选学参考。
【注意】以下脚本也需要在文本模式下,以英文输入方式输入,特别是其中的逗号和引号。其实这是代码输入的一般性常识。
WSH的全称是Windows Script Host,是一种支持ActiveXCOM)的独立脚本语言。WSH脚本程序本来是为了替代DOS时代的批处理文件而产生的,后来由于WSH的应用很广泛,已经不只是局限于批处理的替代品了。从Windows98开始,操作系统就已经自带了WSH,因此在Windows98或以上的操作系统中,可以不安装任何软件就能直接使用WSH
WSH可以使用VBscriptJscript,即使用的脚本语言与网页脚本是一样的。WSH文件的扩展名为vbsjs,分别用VBscriptJscript作为编程脚本语言。还有一种脚本文件的扩展名是wsf,它是一种包含XML的文件,wsf文件中可以同时包含VBscriptJscript两种语言。wsf文件中,可以使用多种脚本,需要一些XML标签来声明的,最基本的就是用<script>标签说明脚本的类型,另外最外层要用<job>标签声明任务。此处所介绍的不是这种支持XML的脚本。

1. 利用WSH脚本中的循环功能实现批量创建用户帐号

用脚本批量添加用户账户的一个最大的好处就是代码输入工作量小,几行就完成了,而且还可以配置用户密码。但难度较大,而且用户名只能是有规律的,不可能针对每个用户具体指定用户名。现在假设要在grfw.local域的Sales组织单位中创建10个用户,用户名为User1User2~User10。下面是这个示例的代码,用记事本程序以vbsjs扩展名格式保存,然后直接双击运行即可。
Set objDomain = GetObject"LDAP://dc=grfw,dc=local"   # 调用(也称绑定)名为grfw.local对象
Set objOU = objDomain.Create"organizationalUnit", "ou=Sales"  # 创建一个名为Sales的组织单位。如果相应的组织单位已创建,则此语句不要,而要采用“Set objContainer = GetObject"LDAP://OU=Sales,dc=grfw,dc=local"语句,否则会显示对象已存在错误信息。
Set objOU = GetObject"LDAP://OU=Sales,dc=grfw,dc=local" # 调用域名为grfw.local,组织单位为Sales对象
objOU.SetInfo    # 保存组织单位信息
For i = 1 To 10  # 设置循环变量和级数
Set objUser = objContainer.Create"User", "cn=UserNo" & i  # Users容器下创建UserNo1UserNo10的用户账户
objUser.Put "sAMAccountName", "UserNo" & i  # 把所得的“UserNo”变量值赋予给相应用户账户的sAMAccountName属性
objUser.SetInfo    # 保存用户信息
objUser.SetPassword "Winda0101"   # 设置所有用户的初始密码均为“Winda0101”
objUser.AccountDisabled = FALSE  # 启用用户
objUser.SetInfo   # 保存用户信息
Next   # 下一个循环         
WScript.Echo "10 Users created."  # 脚本编写结束后的显示信息,提示已创建了1000个用户账户
以上语句在记事本中的格式如图2-31所示。
2-31  WSH脚本格式示例
添加用户后,也会在“Active Directory用户和计算机管理单元相应的组织单位下添加这些用户,如图2-32所示。注意他们已有了初始密码。
批量添加后还要对各用户进行重命名,重命名的方法很简单,只需在相应账户上单击右键,在弹出菜单中选择重命名选项即可进行重命名。
2-32 WSH批量添加的10个用户

本文出自 “王达博客” 博客,转载请与作者联系!





    文章评论
 
2007-10-18 01:49:57
呵呵,遇到要给这么多部门添加账号的时候,估计我就直接委派给他们部门了。

这个VBS能直接附带一个初始密码,方便不少,确实值得学习。。。

2007-10-18 11:32:11
有一定价值。

2007-10-21 19:18:10
用网页添加也可以吧,直接编个网页挂上,让员工自己添加就行了。

2008-05-02 13:53:05
请问我想在
test.org域下组织单位“学院本部”下的“计算机系”下添加用户,脚本这样写的
Set objContainer = GetObject("LDAP://OU=学院本部,OU=计算机学系,dc=sias,dc=org") REM 设置结点容器

它会提示“服务器上没有这样的对象”,请问该怎么改 是不支持中文的组织单元吗?

2008-05-02 13:55:05
Set objContainer = GetObject("LDAP://OU=学院本部,OU=计算机学系,dc=test,dc=org") REM 设置结点容器

2008-05-03 09:25:36
我为此单独实验了一下,WSH脚本是不支持中文名,几次都失败了,用英文名一次就成功了。而且要注意,其中的标点符号必须是半角英文,不能是中文标点。

 

发表评论

昵   称:
验证码:  点击图片可刷新验证码  博客过2级,无需填写验证码
内   容: