积极答复者
dsadd 批量添加账户

问题
-
环境:一个林,一台域控
问题:使用dsadd批量添加账户,csv文件中的membeof这一项要怎么填写呢,使用了可辨别名称,cn=…,ou=…,dc=…,但是命令运行就报错了,提示目录服务没有配置上级参照,因此目录服务无法为此林之外的对象颁发参照
看了下命令结果,命令运行过程中没有识别ou=…,dc=…
CN,OU,SAMName,Office,Title,Department,memberof
张三,test,zhangsan,上海,系统工程师,技术开发,CN=test1,OU=test,DC=QingQingCorp,DC=com
C:\Windows\system32>for /f "skip=1 tokens=1,2,3,4,5,6,7 Eol=; delims=," %a in (c
:\ps\addusers.csv) do dsadd user "cn=%a,ou=%b,dc=QingQingCorp,dc=com" -display %
a -dept %f -office %d -title %e -memberof %g -samid %c -upn %c@changingedu.com -
pwd QingQing2018@Mail -disabled no -mustchpwd yes
C:\Windows\system32>dsadd user "cn=张三,ou=test,dc=QingQingCorp,dc=com" -display
张三 -dept 技术开发 -office 上海 -title 系统工程师 -memberof CN=test1 -samid zh
angsan -upn zhangsan@changingedu.com -pwd QingQing2018@Mail -disabled no -mustch
pwd yes
dsadd 失败:cn=张三,ou=test,dc=QingQingCorp,dc=com:目录服务没有配置上级参照。因此
目录服务无法为此林之外的对象颁发参照。:对象创建成功,但是在创建操作之后有一个错
误。
键入 dsadd /? 以获取帮助。请问,这是怎么回事呢?感谢
- 已编辑 郭世昂 2018年11月27日 6:20
答案
-
你好,
由于我并不清楚你的CSV文件是否存在问题,所以无法确定报错出现的原因。
由于对于bat脚本并不熟悉,所以我只能给你提供给你一个powershell作为参照。
$users=Import-Csv -Path c:\ps\addusers.csv foreach($user in $users) { New-ADUser -Name $user.CN -Path $user.OU -SamAccountName $user.SamAccountName -Office $user.office -Title $user.titile -Department $user.department Add-ADGroupMember -Identity $user.memberof -Members $user.SamAccountName }
最好的祝福,
Lee
Just do it.
- 已标记为答案 郭世昂 2018年11月30日 8:38
全部回复
-
你好,
谢谢你的提问。
在你的给出的命令中“-memberof”后面并没有使用DN(可辩别名称),我在自己的实验环境中做了和你相同的实验,是成功的。 如果你想要将刚刚创建的用户放入特定的组中,你可以在-memberof后面加上特定组的可辩别名称即可。
dsadd user "cn=test1127,ou=test01,dc=lee,dc=com" -display zhangsan -dept jishu -office shanghai -title xitong -memberof "cn=demo01,ou=test01,dc=lee,dc=com" -samid zhangsan -upn zhangsan@changingedu.com -pwd Qingqing2018@Mail -disabled no -mustchpwd yes
请尝试更改你的命令和CSV文件。
最好的祝福,
Lee
Just do it.
-
你好,
由于我并不清楚你的CSV文件是否存在问题,所以无法确定报错出现的原因。
由于对于bat脚本并不熟悉,所以我只能给你提供给你一个powershell作为参照。
$users=Import-Csv -Path c:\ps\addusers.csv foreach($user in $users) { New-ADUser -Name $user.CN -Path $user.OU -SamAccountName $user.SamAccountName -Office $user.office -Title $user.titile -Department $user.department Add-ADGroupMember -Identity $user.memberof -Members $user.SamAccountName }
最好的祝福,
Lee
Just do it.
- 已标记为答案 郭世昂 2018年11月30日 8:38
-
我也遇到同样的问题,卡了两个小时.郁闷死了.原因就是csv文件格式的问题.
1.单独执行命令时,memberof可以正常添加的.使用csv文件导入时就总是报错
提示目录服务没有配置上级参照,因此目录服务无法为此林之外的对象颁发参照
2. 后来仔细看执行结果,是保存csv文件时,它自动把我的 memberof这一列值,变成了三个列.所以导入失败.
因为在保存csv文件时,会有提示,是否保留逗号,
原因:
CSV (*.csv) 文件格式只能保存活动工作表中的单元格所显示的文本和数值。工作表中所有的数据行和字符都将保存。数据列以逗号分隔,每一行数据都以回车符结束。如果单元格中包含逗号,则该单元格中的内容以双引号引起。.
因为csv中的memeberof选项中,cn=,cn=,dc=,dc=,是用逗号分隔的,csv文件导入时会自动加入双引号,然后AD中就会报错.解决
解决办法:
知道错误原因后,在编辑csv文件模板时,就要避免文件中有逗号出现.memberof选项可以改成四列单独的内容,如下:
然后导入脚本改成:
for /f "skip=1 eol=; tokens=1-10 delims=, " %a in (c:\import\ad.csv) do dsadd user cn=%a,ou=****,dc=dhair,dc=cn -upn %b@***.cn -samid %b -pwd %c -tel %d -acctexpires %e -fn %f -pwdneverexpires yes -memberof %g,%h,%i,%j
根源还是csv的格式问题.