|
在学校局域网管理中,有一件事是我们必须要做的,就是给学生创建考试作业环境。基本要求是:学生开机后,在桌面上单击某一文件,即可把域控制器上的某一共享目录映射为本机的网络驱动器,此网络驱动器专属本机本用户,且有一定磁盘配额限制。老师只要把试题复制到域控制服务器的系列共享目录,学生便可如同在本机的一个分区进行操作那样打开专属自己的试题进行考试,且这些操作会在域控制服务器上同步存储。
在Windows Server 2003环境下建立这样的环境是非常方便的,但是,它毕竟要涉及到创建与设置Active Directory用户账户、共享目录、磁盘配额以及网络映射等问题。因此,若在 Windows的图形界面下进行该项操作,一个用户的工作量至少也要几分钟吧,那么,成百上千个用户呢?这可就够你忙的,不过,我们若采用批处理命令和AutoIt脚本程序,此类烦心事便可瞬间轻松搞定。
第一步:首先,建一个名为“aduser.bat”的批处理命令,目的是要在安装有Windows Server 2003域控制服务器的活动目录Active Directory下新建72个域用户账户(以一个机房72台机为例,下同)。在Windows Server 2003中有一个命令行工具dsadd.exe,它的功能是用来向Active Directory中添加特定类型的对象(包括新建域用户账户),但是,要想给Active Directory添加域用户账户,首先要知道该账户的可分辨名称“DN”,那么这个DN又是什么概念呢?实际上,DN是LDAP(Lightweight Directory Access Protocol)轻型目录访问协议中一个条目的区分名称。
第二步:若要知道一个域用户账户的DN,不妨先在Windows 图形界面下新建一个域用户账户,然后用Windows Server 2003的另一个命令行工具Dsquery.exe(功能是按照指定的条件查询 Active Directory)来查询这个账户的DN。譬如,已建了一个属于域3322.org、组织单位bsjf的账户st101,其相关属性设置为:姓st,名101,姓名(显示名称)st101,登录名st101@3322.org,用户登录名(Windows 2000以前版本)WORKGROUP\st101,密码st101,用户不能更改密码,密码永不过期。然后,我们在Windows Server 2003的命令提示符下输入“Dsquery user”。这时,我们就可以看到其中有一新增条目:CN=st101,OU=bsjf,DC=3322,DC=org,这便是LDAP目录中域用户账户st101的DN。
第三步:用dsget.exe(它也是Windows Server 2003的一个命令行工具,功能是显示Active Directory中特定对象的选定属性)来查询st101其他属性。为此,再次在命令提示符下键入:dsget user "cn=st101,ou=bsjf,dc=3322,dc=org" -dn -upn -fn -ln -display -mustchpwd -canchpwd -reversiblepwd -pwdneverexpires -acctexpires -disabled,即可得到st101账户的如下信息(已经过整理和注释):
dn cn=st101,ou=bsjf,dc=3322,dc=org (显示用户的DN)
upn st101@3322.org (显示用户的用户主体名称)
fn 101(显示用户的名)
ln st(显示用户的姓)
display st101(显示用户的显示名)
mustchpwd no(显示用户是否在下次登录时必须更改密码,显示:yes或no。)
canchpwd no(显示用户是否能更改密码,显示:yes或no。)
reversiblepwd no(显示用户密码是否允许使用可逆的加密存储,显示:yes或no。)
pwdneverexpires yes(显示用户密码是否从不过期,显示:yes或no。)
acctexpires never(显示用户帐户何时过期,显示值: 帐户过期日期,或如果该帐户
从不过期,显示字符串 "never"。)
disabled no(显示用户帐户是否被禁止登录,显示:yes或no。)
第四步:参考第三步中的dsget命令及相关参数和所得属性信息,不妨用dsadd.exe试着给Active Directory添加一个st102账户,在命令提示符下键入:
dsadd user cn=st102,ou=bsjf,dc=3322,dc=org -upn st102@3322.org -fn 102 -ln st -display st102 -pwd st102 -mustchpwd no -canchpwd no -pwdneverexpires yes -disabled no。
第五步:用dsget.exe查询一下st102的属性,可知在Windows图形界面下新建账户和设置属性与采用命令行工具(dsadd.exe)设置结果完全一致。也就是说,在命令提示符下键入一条dsadd命令及相关参数就能建一个完整的(包括所有预定属性)域用户账户,这就为运用AutoIt脚本和DOS批处理命令批量新建及设置域用户账户创造了条件。
第六步:我们来编写“aduser.bat”批处理文件,内容如下:
for /L %%A in (1,1,9) do dsadd user cn=st10%%A,ou=bsjf,dc=3322,dc=org -upn
st10%%A@3322.org -fn 10%%A -ln st -display st10%%A -pwd st10%%A -mustchpwd
no -canchpwd no -pwdneverexpires yes -disabled no
for /L %%A in (10,1,72) do dsadd user cn=st1%%A,ou=bsjf,dc=3322,dc=org -upn
st1%%A@3322.org -fn 1%%A -ln st -display st1%%A -pwd st1%%A -mustchpwd no
-canchpwd no -pwdneverexpires yes -disabled no
在这个批处理命令中,第一句用了一个For循环语句,变量%%A从1变化至9,步长为1,所以建了从st101到st109的9个账户,参数为前面提到的相关属性,第二句类似建从st110到st172的63个账户,加起来共72个账户。
|