管理需要,最近要部署AD域进行管控。组织架构虽不复杂,人员也不算太多,但挨个手动创建是不可能的,绝对不可能。以前dsadd user、dsadd ou用的次数不少,可惜过段时间不用,命令格式、参数忘得差不多了,又得去翻资料,太烦了。于是,萌生了一种想法,能不能写个适用性稍微广一点的脚本,以后不论要创建哪个公司的AD,只要根据模板调整下员工通讯录的格式就可以一键导入了?嗯,值得尝试。
1、OU组织创建:
dsadd ou "ou=XX小组,ou=XX部门,ou=XX中心,dc=test,dc=com"
在test.com域下创建三级组织:XX中心-XX部门-XX小组
值得注意的是,OU的创建是有层次关系的,必须先创建好XX中心,然后再创建好XX部门,最后通过上述命令才能创建XX小组成功。
所以,如果需要一键创建好三层组织,需要通过下述命令实现:
dsadd ou "ou=XX中心,dc=test,dc=com"
dsadd ou "ou=XX部门,ou=XX中心,dc=test,dc=com"
dsadd ou "ou=XX小组,ou=XX部门,ou=XX中心,dc=test,dc=com"
2、User用户导入:
dsadd user "cn=用户,ou=XX小组,ou=XX部门,ou=XX中心,dc=test,dc=com" -upn 登录名@test.com -samid 登录名 -pwd 密码 -display 显示名称 -tel 电话 -email 邮件 -ln 姓 -fn 名 -title 职务
User导入要依赖于OU组织的存在,所以必须先创建好OU好才能向对应的组织导入用户。
User创建相比于OU的创建,不同之处在于,dsadd user命令可以携带大量命令参数给User赋值,如上所述,可以设置用户登录名、密码、显示名称、联系电话、邮箱地址、职务等等。
注意,UPN值具有唯一特性,所以如果有两位以上用户的“登录名@test.com”相同时,User用户将会创建失败。另外,如添加了对应的命令参数,则该参数对于的员工通讯录列可以设置为“NULL”,但不能有空值。
3、循环获取员工通讯录.csv列表信息并给OU、User赋值:
for /f "skip=忽略行数 tokens=1-20 delims=," %%a in (员工通讯录.csv) do (
::OU创建
dsadd ou "ou=%%b,dc=%%f,dc=%%g"
dsadd ou "ou=%%c,ou=%%b,dc=%%f,dc=%%g"
dsadd ou "ou=%%d,ou=%%c,ou=%%b,dc=%%f,dc=%%g"
dsadd ou "ou=%%e,ou=%%d,ou=%%c,ou=%%b,dc=%%f,dc=%%g"
::User导入
dsadd user "cn=%%a,ou=%%e,ou=%%d,ou=%%c,ou=%%b,dc=%%f,dc=%%g" -upn %%h%domains% -samid %%i -pwd %%j -display %%k -ln %%l -fn %%m -dept %%n -tel %%o -title %%p -email %%q
bat能够直接读取csv、txt等格式文件,%%a对应csv文件A列。
4、批量创建OU、User的部分截图:
P1.OU、User批量创建导入
AD用户与计算机中最终效果: #多层组织及用户自动创建完成
P2.自动创建导入多层OU及User
5、成品及操作说明:
操作说明:
(1)、将员工通讯录CSV文件按照所处一级、二级、三级、四级组织排序,一级组织的人员优先,四级组织最后。 #目的是定位各级组织的起始行号,方便bat循环跳转
P3.先后按照一级、二级、三级、四级组织进行排序,然后标示各级组织起始行
(2)、运行AD_OU批量创建.bat或者二合一脚本,输入各级组织起始行号,用空格隔开,如上图所示则需输入3 6 9 12,自动创建OU组织:
P4.运行脚本,输入各级组织起始行号,批量创建OU
(3)、运行AD_User批量导入.bat脚本,输入AD域名及各级组织起始行号,自动导入User:
P5.运行脚本,输入AD域名和各级组织起始行号,批量导入User
完工。今后只需按照“aduser.csv”文件为模板,整理好员工通讯录信息集合,然后无情双击运行AD_OU、AD_User批量脚本工具或者二合一工具即可完美自动创建,再也不用花大量闹细胞去重复写脚本了~
附: