RSS

利用bat来处理添加新ad账户的工作

28 Dec

需求:
由于本人很懒,不想自己每周都在位子上敲击着键盘输入一堆对我来说无用的字符去添加用户,所以寻找简单的办法解决问题。
状况:
知道ad的命令行添加cmd dsadd;大概知道的for,然后就开始动主意了。正好又问到楼下的哥们,了解一个大概的方式,然后开始进行了。
服务器状态:
win03+win08,ex07,全英文环境
目的:
尽量少的操作,让用户添加和邮箱建立完成。
方案:
1、建立文件namelist.txt
======================================================
Zhang,San
Bai,Shi
Ling,Muma
Fang,Kuai
//%%i,%%j

2、建立文件user_mail.cmd
======================================================
set dc1=cn
set dc2=com
set dc3=test
set ou1=branch
set ou2="beijing office"
// 如果你的ou名中有空格,需要用引号圈住ou name
set ou3=employee
// 这里大家需要注意ou,dc之间的关系
set pwd=password
set namelist=.\namelist.txt
set monadscript=.\en-mailbox.txt
set databasename="mailbox database"
set date="YYYY-XX-XX"
//到此,都是建立固定变量
dsadd ou ou=%ou3%,ou=%ou2%,ou=%ou1%,dc=%dc3%,dc=%dc2%,dc=%dc1%
//到此是添加ou。如果你的ou已经建立好,此步可以省略。
FOR /F "eol=/ tokens=1,2,* delims=, " %%i in (%namelist%) do dsadd user cn="%%i %%j",ou=%ou3%,ou=%ou2%,ou=%ou1%,dc=%dc3%,dc=%dc2%,dc=%dc1% -samid %%j%%i -upn %%j%%i@%D3%.%D2%.%D1% -pwd %pwd% -ln %%i -fn %j -display "%%i %%j" -desc %date% -pwdneverexpires yes
//到此是添加用户,
//用户在ad user 里面显示的用户名 cn="%%i %%j"如果用户名内有空格,记得用引号包住
//用户登录名  -upn <UPN>
//samid 用于非ad管理的名字,可以省略。
//win2000以前版本的用户登录名 自动引用upn
//密码永不过期  -pwdneverexpires 默认值: no,需要用yes
//用户显示名  (-display <DisplayName>
//用户姓lastname  -ln
//用户名firstname -fn
//密码 -pwd {<Password> | *}  如果是 *,会提示您输入密码。)
//描述 -desc 由于引用的是起始设定的变量,我建议可以描述一下建立日期

FOR /F "eol=/ tokens=1,2,* delims=, " %%i in (%namelist%) do echo Enable-Mailbox -Identity "%%j%%i" -Alias "%%i %%j" -Database %databasename% >>%monadscript%
======================================================
2、运行user_mail.cmd,用户添加自动搞定。
3、将生成的en-mailbox.txt内文件,复制到powershell里运行,用户邮箱添加搞定。

一些解释
1、dsadd user 是 Windows Server 2003 下的工具。
2、namelist.txt 内的原始数据需要手工输入。(最近正在考虑从excel07里自动取数,一直失败。其实目前的状态也还可以,用excel建立好了,copy到txt也行,还是有点麻烦)
3、FOR /F "eol=// tokens=1,2,3* delims=, " %%i in (%namelist%)
/f 指本for命令会从文件内取数,
eol=; 忽略;开头的行,可以用来写注释了
tokens=1,2,3* 把每行第一个delims前的内容赋予变量1,其后的内容赋予变量2,3*表示第三个变量包括了后面所有的数。也就是说,这里只会取1,2,3,如果你要取第4个数,只能是1,2,3,4,5*,或1,2,3,4*
delims=, 分隔符是,
%%i in (%namelist%) 第一个变量是来自%namelist%的%%i(区分大小写

Advertisements
 
Leave a comment

Posted by on December 28, 2008 in Cmdlets&Tools

 

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s

 
%d bloggers like this: