次のコマンドを使用して、名、姓、ユーザー名、パスワードを含むtxtファイルから数千人のテストユーザーをプログラムで作成しています(バッチファイルとして保存、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.
リストに重複するユーザーが1人もいない場合でも。 ADユーザーのMMCスナップイン)でOUを表示すると、最初のユーザーのみが作成され、他のユーザーが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
手動で実行するのではなく、バッチファイルをクリックするだけでこれを実行できると便利です。
編集:今朝バッチファイルを実行したとき、ユーザーは正常に作成されましたが、最初のユーザーも毎回エラーを出すことに気付きました。
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を使用する」でした。これは、使用する必要のあるWindowsのバージョン(Server 2008 x64)では ADモジュールが使用できない ため、オプションではありません。
編集2
コマンドを直接実行したときに一見ランダムなユーザーが失敗していたという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
同じ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
したがって、どういうわけか、コマンドをバッチファイルとして実行すると、セクションCarroll.Colhoun -pwd "xLxP}zUdCF4rpzUkB#uS" -upn Carroll.Colhoun
全体が省略され、k
だけに置き換えられます。
バッチファイルの問題については、samid
とupn
が%k
を使用するタイプミスのあるファイルの間違ったコピー(ここにコピーして貼り付けたものとは異なるもの)から作業していたことがわかりました。 %%k
の代わりに。それがどのように導入されたかはわかりませんが、タイプミスを修正すると、バッチファイルを正常に実行できるようになります。
(これを編集として作成する方が適切な場合は、コメントしてください。変更します)