我正在使用以下命令(保存为批处理文件,在 cmd 中运行,修改自这个问题):
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.
即使列表中没有一个重复的用户。在 MMC 管理单元中查看 AD 用户的 OU,我看到只创建了第一个用户,OU 中没有其他用户。
当我尝试直接运行该命令时,该命令将会起作用(根据需要更改%%i
为并使用将我的错误路由到 txt 文件。)%i
2>>Errors.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
如果能够通过单击批处理文件来运行该程序,而不是手动执行,那就太好了。
编辑: 当我今天早上运行批处理文件时,我注意到虽然用户已成功创建,但第一个用户每次也会出现错误:
Unable to update the password. The value provided for the new password does not meet the length, complexity, or history requirements of the domain
当我直接运行命令而不是运行批处理文件时,密码会成功,但会出现这种情况。所有后续用户都会出现“指定帐户已存在”错误。
我查了一下这个错误,发现一个老问题有类似的问题。不幸的是,解决方案是“使用 Powershell”,但这不是选项,因为AD 模块不可用在我必须使用的 Windows 版本上 (Server 2008 x64)
编辑2
第二个问题似乎是随机用户在直接运行命令时失败,结果却是不同 OU 中具有相同 samAccountName 的用户的问题,这是不允许。
编辑3
更改do
为do echo
将命令写出到新的批处理文件,生成的命令如下:
dsaddUser "cn=Carroll Colhoun,ou=Testou,dc=mydomain,dc=com" -samid [email protected] -fn "Carroll" -ln "Colhoun" -display "Carroll Colhoun" -disabled no -mustchpwd no
与直接运行相同的 dsadd 相比do echo
,它会生成以下内容:
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
因此,以批处理文件的形式运行该命令会省略整个部分Carroll.Colhoun -pwd "xLxP}zUdCF4rpzUkB#uS" -upn Carroll.Colhoun
,并将其替换为k
答案1
对于批处理文件问题,事实证明我使用的是错误的文件副本(与我在此处复制粘贴的文件不同),其中有一个拼写错误,将和samid
用作upn
。我不确定这是怎么造成的,但纠正拼写错误将使批处理文件成功运行。%k
%%k
(如果将其作为编辑更合适,请发表评论,我会进行更改)