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

以下内容摘自笔者编著的《网管员必读——网络管理》(第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个用户

本文转自王达博客51CTO博客,原文链接http://blog.51cto.com/winda/46419如需转载请自行联系原作者


茶乡浪子

上一篇:缓存一致性协议


下一篇:如何在Debian Linux上安装配置ISC DHCP服务器