Technorati 标签: 夏明亮, 批量新建AD账户, dsadd, for, 51cto

情景:管理员需要创建大量AD账户。

环境:windows AD Server (假如无法使用powershell)

步骤:

A 在DC Server的C盘根目录下创建文件夹newaccount

clip_image002

B 在newaccount目录下创建文件newuser.bat和userlist.txt

clip_image004

C userlist.txt内容如下图所示,间隔符为逗号。

clip_image006

D newuser.bat文件内容如下图所示,注意%的个数,如果直接在cmd窗口中执行脚本中do后面的命令,则应该只使用一个%。(在bat文件中使用变量,需要为变量增加一个%符号)。

clip_image008

Bat内容为:

for /f "tokens=1,2 delims=," %%a in (c:\newaccount\userlist.txt) do dsadd user CN=%%a,OU=users,OU=test,DC=XXX,DC=XXX,DC=com,DC=cn -upn %%a@XXX.XXX.com.cn -display %%b -pwd Passw0rd -pwdneverexpires yes -disabled no

for语句语法简单介绍:

上面脚本中的for语句中的tokens=1,2表示for循环从文件c:\newaccount\userlist.txt中获取每一行的第一二字段的值;delims=,表示c:\newaccount\userlist.txt中的字段使用逗号分隔。

%%a:表示将for /f获得的第一字段值赋予变量%a(由于在bat文件中所以使用%%a);加入bat文件中把此处的%%a替换为%%i,则后面的%%b应依次替换为%%j。

E 双击执行newuser.bat。

F 检查执行结果。

clip_image010

clip_image012

clip_image014

其他:

1、dsadd user 是 Windows Server 2003 才具备的工具。

2、UserList.txt 内的原始数据还是需要手工输入的。

3、For语句将读取UserList.txt,把每行第一个空格前的内容赋予变量%%a,空格后的内容赋予变量%%b。For语句中tokens的含义是关键。后面一部分则是dsadd user的命令,可以根据自己的需求修改域名和OU名,如果直接创建在默认的Users文件下的话就把OU=users,OU=test改成CN=Users。(域中已存在的OU)

4、我在创建用户时关注的一些选项以及这些选项在dsadd中的对应开关符

(1)用户登录名 (-upn <UPN>    设置 upn 值为 <UPN>。)

(2)win2000以前版本的用户登录名   (设置了upn会自动生成)

(3)密码永不过期 (-pwdneverexpires {yes | no} 用户密码是否永远不过期。默认值: no。)

(4)账户永不过期 (-acctexpires <NumDays>  设置用户帐户从今天起在 <NumDays> 天内过期。0 值
意味着今天结束后帐户就过期; 正数值意味着帐户在未
来过期; 负数意味着该帐户已经过期并将过期日期设置
在过去; 字符串值 "never" 意味着该帐户永远不过期。)

(5)用户显示名 (-display <DisplayName>  设置用户显示名为 <DisplayName>。)

(6)登录密码 (-pwd {<Password> | *}   设置用户密码为 <Password>。如果是 *,会提示您输入密码。)

(7)用户下次登录是否修改密码 (-mustchpwd {yes | no}   用户在下次登录时是否更改密码。默认值: no。)

(8)账户是否禁用 (-disabled {yes | no}    用户帐户是否禁用。默认值: no。)

5、dsadd user 还有许多开关符,可以根据需要自己添加。我关注的选项中有些默认值就是符合需求的,所以在命令行中没有出现。