none
dsadd 批量添加账户 RRS feed

  • 问题

  • 环境:一个林,一台域控

    问题:使用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日 4:44

答案

  • 你好,

    由于我并不清楚你的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
    2018年11月29日 9:48
    版主

全部回复

  • 你好,

    谢谢你的提问。

    在你的给出的命令中“-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.

    2018年11月27日 12:37
    版主
  • 单个用户是没有问题的,指定对应可辩别名称,但是放到CSV文件中,批量创建不同组的账户,用%a,%b,这样去指定就不管用了,会报错
    2018年11月28日 12:28
  • 你好,

    由于我并不清楚你的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
    2018年11月29日 9:48
    版主
  • 我也遇到同样的问题,卡了两个小时.郁闷死了.原因就是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的格式问题.

    2019年12月30日 11:56