2.4.6
利用脚本批量添加域用户账户
以上两种方法是比较常用的批量用户账户添加方法,但是不够灵活(不可以设置密码),而且在添加用户数量多时,输入的工作量也比较大。本节所介绍的
WSH
脚本方法相对来说,工作量比较小,但难度却要高许多,需要懂得一些基本的脚本语言。
仅作选学参考。
【注意】以下脚本也需要在文本模式下,以英文输入方式输入,特别是其中的逗号和引号。其实这是代码输入的一般性常识。
WSH
的全称是
Windows Script Host
,是一种支持
ActiveX
(
COM
)的独立脚本语言。
WSH
脚本程序本来是为了替代
DOS
时代的批处理文件而产生的,后来由于
WSH
的应用很广泛,已经不只是局限于批处理的替代品了。从
Windows98
开始,操作系统就已经自带了
WSH
,因此在
Windows98
或以上的操作系统中,可以不安装任何软件就能直接使用
WSH
。
WSH
可以使用
VBscript
与
Jscript
,即使用的脚本语言与网页脚本是一样的。
WSH
文件的扩展名为
vbs
及
js
,分别用
VBscript
与
Jscript
作为编程脚本语言。还有一种脚本文件的扩展名是
wsf
,它是一种包含
XML
的文件,
wsf
文件中可以同时包含
VBscript
与
Jscript
两种语言。
wsf
文件中,可以使用多种脚本,需要一些
XML
标签来声明的,最基本的就是用<
script
>标签说明脚本的类型,另外最外层要用<
job
>标签声明任务。此处所介绍的不是这种支持
XML
的脚本。
1.
利用
WSH
脚本中的循环功能实现批量创建用户帐号
用脚本批量添加用户账户的一个最大的好处就是代码输入工作量小,几行就完成了,而且还可以配置用户密码。但难度较大,而且用户名只能是有规律的,不可能针对每个用户具体指定用户名。现在假设要在
grfw.local
域的
Sales
组织单位中创建
10
个用户,用户名为
User1
、
User2~User10
。下面是这个示例的代码,用记事本程序以
vbs
或
js
扩展名格式保存,然后直接双击运行即可。
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
容器下创建
UserNo1
到
UserNo10
的用户账户
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-31WSH
脚本格式示例
添加用户后,也会在
“Active Directory
用户和计算机
”
管理单元相应的组织单位下添加这些用户,如图
2-32
所示。注意他们已有了初始密码。
批量添加后还要对各用户进行重命名,重命名的方法很简单,只需在相应账户上单击右键,在弹出菜单中选择
“
重命名
”
选项即可进行重命名。
图
2-32
用
WSH
批量添加的
10
个用户