近期公司的AD和Exchange项目如预期的进展还不错,赶上AD用户的批量导入,5K用户,工作量很大哦,还好无意间看到一篇blog,讲借助Excel函数简化表格的输入操作,试用了下还不错,修改后分享给大家,增加图文操作哦,原blog是没有的哦。。。,废话不多说转入正题。。。。

通过脚本的方式批量的导入AD账户,或者批量修改密码。方法很多的,网上教程也很多,不少朋友都知道,就是Windows自带的几个CMD命令。就不再过多废话这如何通过命令编辑脚本来实现这个功能了,如果真有需要,大家可以Google、Baidu一下,很多的。

今天给大家分享借助Excel的函数功能来简化脚本的编写。网上很多是直接用txt文本编辑或者借助excel表格补充完整后,转换成csv格式的。像我们公司动辄5K用户需要添加到AD中还要设置密码,用复制粘贴的方式得做无数遍啊,用岳老师的话:得找几个“表妹”来码这些个表格。。。。。。

想到很久前看到过一网友写的一文章,借助Excel函数来简化输入,于是自己试着做了下,效果还不错。。。。

首先说下用到的命令,csvde.exe和dsmod.exe,具体用法可参考微软KB库

http://support.microsoft.com/kb/327620

http://support.microsoft.com/kb/322684

简单说下csvde.exe中用到的定义值

DN,objectClass,sAMAccountName,description,userPrincipalName,displayName,userAccountControl

DN:名字标示

objectClass:组的类别

sAMAccountName:2000以前版本:也是用户登录名称的意思

description:用户描述

userPrincipalName:用户登录全程

displayName:用户登录显示的名称

userAccountControl:对账户权限进行控制,512启动, 514禁用, 66048代表永不过期

本次共用到两张表格,如下,由于图片无法全显示,已将表格上传附件

clip_p_w_picpath002

clip_p_w_picpath004

第一步批量导入AD账户。在文件的第一张表格中,绿色的区域是需要我们手动添填入信息的,主要是账户名、 OU、账户显示名称。以及描述,(注:OU一定要提前建好,关于批量OU可参考我的另一篇文章---一次批量导入OU,本次实验主要考虑到需要中文名称及工号信息,所以手动输入的较多,对于不需要这两项信息的可修改下Excel文件,只需输入账户名及OU即可,简化操作)。其他区域都是写固定格式,或者自动生成的(×××及蓝色区域))。最后我们只需要将蓝色区域的字符内容copy到一个txt文本文件中,然后用“@”替换掉所有的“#”(函数中不支持输入@)。另外,还需要将csvde.exe值定义的那行(本文中的红色文字)放到txt文件的第一行。这样,csvde.exe所需要调用的文本,就制作完成了。

值得一提的是我们的数据来源往往都是HR部门或者相关经过整理的数据,大多数都是一个excel表格,所以我们可以直接copy到这个excel里面。这样,连一个一个敲名字都不用了。不管用户数量多少,几次全选复制就OK了。。。。

接下来要做的就是将我们这个txt文件拿到我们的域控中或者具有管理ADUC权限的计算机中,打开CMD.exe,然后执行一条命令就完成导入操作。如图所示

clip_p_w_picpath006

用Excel函数及csvde简化批量导入域(AD)用户及修改密码_第1张图片

打开我们的ADUC就能看到我们导入的用户了。。。

用Excel函数及csvde简化批量导入域(AD)用户及修改密码_第2张图片

第二步是修改密码。在文件的第二张表中,没有需要输入的地方,如果我们需要修改用户的密码,只要将表中的绿色区域替换成实际密码即可。然后将表二中的蓝色区域字符,copy到txt文件中。需要注意的是,我们需要将“-pwd”前面的那个逗号“,”用替换的方式一次性全部去掉。然后将这个txt文本的后缀改为.bat。最后以管理员权限运行在域控中或者具有管理ADUC权限的计算机中即可。

用Excel函数及csvde简化批量导入域(AD)用户及修改密码_第3张图片

用Excel函数及csvde简化批量导入域(AD)用户及修改密码_第4张图片

最后一部启用我们导入的账户即可,可以批量启用

用Excel函数及csvde简化批量导入域(AD)用户及修改密码_第5张图片

用Excel函数及csvde简化批量导入域(AD)用户及修改密码_第6张图片

如果我们的用户很多,如我们5K用户,bat运行的过程会持续一个相对较长的时间。尽管如此,它都能大幅度提高我们的工作效率。

最好在操作时输出一个日志文件,方便我们时候查询处理过程、排错以及核对导入的信息是否正确。

Excel文件已上传

=====================================================================================================

[5楼]     zzj1982823 回复
2012-03-30 11:44:08
c:\>csvde -i -f c:\users.txt
连接到“(null)”
用 SSPI 作为当前用户登录
从“c:\users.txt”文件导入目录
加载条目.
在 2: 无此对象 行添加出错
服务器边的错误为 "找不到目录对象。"
成功地修改了 0 个条目。
在程序中出现一个错误
没有写入日志文件。要生成日志文件,请
通过 -j 选项来指定日志文件路径。

这是什么问题啊


[6楼] 楼主 liang_simon 回复
2012-03-30 13:52:26
回复 zzj1982823: [5楼]
请确认是否将users.txt文件中的#替换为@!


[7楼]     boy_hxm 回复
2013-01-01 06:53:17
回复 liang_simon: [6楼]

simon,你好,我也叫Simon,
我也遇到了5楼的问题,发现是userAccountControl在作怪,这个属性的值不能是512,只能是514。如果是512,就算改了组策略也没有用。

[10楼]     ht845841254 回复
2013-01-05 09:29:52
导入用户的时候 好像不能加密码进去 所以只能导514(禁用)的状态   然后批量修改密码吧 再启用 有一本书上这么说的 印象中


[11楼]     kanghepeng 回复
2013-04-16 13:34:28
我的报错同5楼一样 512换成514还是报错 另存为编码换成unicode 后缀换成csv也是报错


[12楼]     kanghepeng 回复
2013-04-16 14:46:36
找到错误原因了 是因为没有提前在ou下面在创建ou:user 最搞笑的是我#没有换成@居然也可以


[13楼]     olaychong 回复
2014-01-22 08:16:22
谢谢楼主,帮助很大,补充一个蛋疼的事实:
如果full nanme中有逗号,比如张三:zhang, san
导入账户的时候,ds判别名应该是:CN=zhang\\, san,OU=......
导入密码的时候,ds判别名应该是:CN=zhang\, san,OU=......
我ca,就少一根横线,搞得我想吐