概要
ActiveDirectoryにユーザーを追加するときにはGUIから行うのが一般的だけど、エクセルやCSVなんかで一覧をポンと渡されて後はヨロシクされる時がある。
で、大概にして手作業するにはちょっと...という人数が載っている。例えば1000ユーザーとか。
こんな数をGUIから手作業していると日が暮れるので、コマンドでさくっと登録するための手順をまとめておく。
検証環境:
- OS : WindowsServer2012R2
- フォレスト/ドメインレベル: WindowsServer2012R2
- ドメイン名: sample.local
コマンドラインでActiveDirectoryオブジェクトを操作する方法
一括操作を説明する前に操作コマンドをまとめておく。
なお、コマンド上での操作はDN(識別名)が頻出するため、詳細は以下のURLを確認しておくこと。
https://msdn.microsoft.com/en-us/library/aa366101(v=vs.85).aspx
ActiveDirectoryユーザーを作成する
やろうと思えば1行で細かく設定されたユーザーを作ることができるけど、コマンドがすごく長くなるためなるべくシンプルな例を示す。それでも長い。
コマンド:
dsadd user "{ユーザーDN}" -display "{表示名}" -pwd "{パスワード}" -pwdneverexpires yes -upn "{ユーザーID}@{ドメイン名}"
例:
dsadd user "CN=test,CN=Users,DC=sample,DC=local" -display "テスト" -pwd "password" -pwdneverexpires yes -upn "test@sample.local"
例のコマンドを実行すると次のような状態で作成される。
- ActiveDirectoryユーザーとコンピューター
- sample.local
- Users
- test
- Users
- sample.local
細かい設定はあとで変更も可能なので、とりあえずこれで作成しておく。
参考URL:
https://technet.microsoft.com/ja-jp/library/cc731279(v=ws.10).aspx
https://technet.microsoft.com/ja-jp/library/cc732954(v=ws.10).aspx
ユーザーのプロファイルパスを指定する
を指定しておきたい場合もある。その場合は次のコマンドで設定できる。
コマンド:
dsmod user "{ユーザーDN}" -profile "プロファイルパス"
例:
dsmod user "CN=test,CN=Users,DC=sample,DC=local" -profile "\\sample.local\profiles\test"
ActiveDirectoryグループを作成する
グループを沢山作るようなシチュエーションはあまりないけど、せっかく調べたので書いておく。
コマンド:
dsadd group "{グループDN}"
例:
dsadd group "CN=tests,CN=Users,DC=sample,DC=local"
参考URL:
https://technet.microsoft.com/ja-jp/library/cc754037(v=ws.10).aspx
https://technet.microsoft.com/ja-jp/library/cc732423(v=ws.10).aspx
グループにユーザーを参加させる
コマンド:
dsmod group "{グループDN}" -addmbr "{ユーザーDN}"
例:
dsmod group "CN=tests,CN=Users,DC=sample,DC=local" -addmbr "CN=test,CN=Users,DC=sample,DC=local"
グループからユーザーを脱退させる
コマンド:
dsmod group "{グループDN}" -rmmbr "{ユーザーDN}"
例:
dsmod group "CN=tests,CN=Users,DC=sample,DC=local" -rmmbr "CN=test,CN=Users,DC=sample,DC=local"
ActiveDirectoryユーザーを一括操作する
エクセルなどの表計算ソフトを使うことで、ユーザー作成が非常にラクになる。
ここでは、以下の要件を満たす操作バッチを作成するものとする。
- ID・パスワード・氏名が一覧化したエクセル名簿データがある
- フォルダリダイレクトをさせたい
- フォルダリダイレクト先は
\\sample.local\documents\ユーザーID
- フォルダリダイレクト先は原則そのユーザーしかアクセスできないようにしたい
コマンド生成用ファイルを作る
Excelを起動して、各セルに以下の内容を入力する。
user-id
password
表示名
=IF(ISBLANK(A1),"","dsadd user ""CN="&A1&",CN=Users,DC=sample,DC=local"" -display """&C1&""" -pwd """&B1&""" -pwdneverexpires yes -upn """&A1&"@sample.local""")
=IF(ISBLANK(A1),"","mkdir \\sample.local\documents\"&A1)
=IF(ISBLANK(A1),"","icacls \\sample.local\documents\"&A1&" /grant:r "&A1&":(OI)(CI)(F)")
全部入力し終えたら、以下のような状態になっていることを確認する。
問題がなさそうであれば、D1:F1列を選択して選択範囲の右下にある■マークを掴んでビーッと下まで自動入力させる。
登録予定のユーザー数あたりまで引っぱっておけばとりあえずいいと思う。
名簿データを投入する
コマンド生成用ファイルのA列にユーザーID、B列にパスワード、C列に表示名をコピーして入力する。(1行目に書いてあるデータは上書きしてしまってかまわない。)
余計な書式とかはいらないので、右クリック→テキストのみ保持で文字データのみ貼り付けること。
バッチファイル化する
DEF列がそれぞれコマンドとなるので、適当にバッチファイルを作成してコピペする。
初めから大量のユーザーを作成するとミスがあった場合に大惨事になるので、2-3件でテストしておくこと。
@echo off
dsadd user "CN=test1,CN=Users,DC=sample,DC=local" -display "テスト1" -pwd "password" -pwdneverexpires yes -upn "test1@sample.local"
dsadd user "CN=test2,CN=Users,DC=sample,DC=local" -display "テスト2" -pwd "password" -pwdneverexpires yes -upn "test2@sample.local"
dsadd user "CN=test3,CN=Users,DC=sample,DC=local" -display "テスト3" -pwd "password" -pwdneverexpires yes -upn "test3@sample.local"
mkdir \\sample.local\documents\test1
mkdir \\sample.local\documents\test2
mkdir \\sample.local\documents\test3
icacls \\sample.local\documents\test1 /grant:r test1:(OI)(CI)(F)
icacls \\sample.local\documents\test2 /grant:r test2:(OI)(CI)(F)
icacls \\sample.local\documents\test3 /grant:r test3:(OI)(CI)(F)
pause
バッチファイルをドメインコントローラー上で実行する
適当な場所に作成したバッチファイルを置いて実行する。
正常に動作したことを確認できればOK。何かエラーが発生したらメッセージが表示されているはずなので、よく確認すること。
以上