当没有相同dn的现有帐户时,dsadd从batch file运行失败,并显示“指定帐户已存在”

我使用以下命令(保存为batch file,在cmd中运行,从此问题进行修改)以编程方式从包含名字,姓氏,用户名和密码的txt文件创build数千个testing用户:

FOR /F "tokens=1,2,3,4 delims," %%i in (UserList.txt) do (dsadd user "cn=%%j %%i,ou=2013,ou=My50kOU,dc=mydomain,dc=com" -samid %%k -pwd "%%l" -upn %%[email protected] -fn "%%j" -ln "%%i" -display "%%j %%i" -disabled no -mustchpwd no) 

UserList.txt的示例内容

 Claverie,Eugenio,Eugenio.Claverie,UX8y30B2TFN%Y?Ig[78Z Baglio,Carl,Carl.Baglio,i=*fqdRyK]#cab/i5j%U Wilda,Irina,Irina.Wilda,{***f)GwK#K3Rd!iE}%D Shadowen,Gale,Gale.Shadowen,xLxP}zUdCF4rpzUkB#uS 

但是,对于第一个用户之后的每个用户,我都会收到以下错误消息:

 dsadd failed:cn=Carl Baglio,ou=My50kOU,dc=mydomain,dc=com:The specified account already exists. 

即使列表中没有单个重复的用户也是如此。 查看AD用户的MMCpipe理单元中的OU,我看到只有第一个用户已经创build,并且OU中没有其他用户。

当我尝试直接运行它(将%%i更改为%i并使用2>>Errors.txt将错误路由到一个txt文件)时,该命令将起作用。

命令直接在CMD中运行:

 FOR /F "tokens=1,2,3,4 delims," %i in (UserList.txt) do (dsadd user="cn%j %i,ou=My50kOU,dc=mydomain,dc=com" -samid %k -pwd "%l" -upn %[email protected] -fn "%j" -ln "%i" -display "%j %i" -disabled no -mustchpwd no) 2>>Errors.txt 

只需点击batch file就可以运行它,而不是手动执行。

编辑:当我今天早上运行batch file时,我注意到第一个用户每次都会给出一个错误,尽pipe用户被成功创build了:

 Unable to update the password. The value provided for the new password does not meet the length, complexity, or history requirements of the domain 

对于直接运行命令而不是运行batch file的密码,会发生这种情况。 所有后续用户都有“指定帐户已存在”错误。

我查了一下这个错误,发现了一个类似的问题。 不幸的是,该决议是“使用Powershell”,这是不是一个选项,因为AD模块不能在我必须使用的Windows版本(服务器2008年x64)

编辑2

在直接运行命令时看似随机的用户失败的第二个问题直接导致了在不同OU中具有相同samAccountName的用户的问题,这是不允许的 。

编辑3

更改do do echo来把命令写出来生成一个新的batch file,命令如下:

 dsaddUser "cn=Carroll Colhoun,ou=Testou,dc=mydomain,dc=com" -samid [email protected] -fn "Carroll" -ln "Colhoun" -display "Carroll Colhoun" -disabled no -mustchpwd no 

相比于运行相同的do echo直接do echo dsadd,它产生这样的:

 dsaddUser "cn=Carroll Colhoun,ou=Testou,dc=mydomain,dc=com" -samid Carroll.Colhoun -pwd "xLxP}zUdCF4rpzUkB#uS" -upn [email protected] -fn "Carroll" -ln "Colhoun" -display "Carroll Colhoun" -disabled no -mustchpwd no 

所以不知何故,作为batch file运行该命令是省略整个部分Carroll.Colhoun -pwd "xLxP}zUdCF4rpzUkB#uS" -upn Carroll.Colhoun并replace它只是k

对于batch file问题,事实certificate我正在从文件的错误副本(与此处复制粘贴不同的那个副本)那里有一个错字,其中samidsamid使用%k而不是%%k 。 我不确定如何引入,但更正错别字将允许batch file成功运行。

(如果将其作为编辑更合适,请评论,我会改变它)