NETWORK ENGINEER BLOG

Tips and Reviews for Engineers

csvde / ldifde によるアカウント一括登録

csvde と ldifde とは

csvde コマンドラインユーティリティ

CSV ファイルから Active Directory ドメインにデータをインポート/エクスポートする事ができます。
CSV 形式なので、編集・管理が容易ですが、オブジェクトの内容を変更する事はできません。

ldifde コマンドラインユーティリティ

LDIF ファイルから Active Directory ドメインにデータをインポート/エクスポートする事ができます。
csvde とは異なり、オブジェクトの内容を変更する事ができます。
マイクロソフトは、修正や削除の操作には Ldifde ユーティリティを使用することを推奨しています。

csvde 使用例

csvde を使用して、example.com ドメインの POC 組織の情報をエクスポートするには以下を実行します。

PS C:\> csvde -f sample.csv -d "ou=POC,dc=example,dc=com"

エクスポートされた sample.csv の内容は次のとおりです。※一部属性を省略しています。

DN,objectClass,displayName,userAccountControl,sAMAccountName,userPrincipalName
"OU=POC,DC=example,DC=com",organizationalUnit,,,,
"CN=user001,OU=POC,DC=example,DC=com",user,user001,66048,user001,user001@example.com
"CN=user002,OU=POC,DC=example,DC=com",user,user002,66048,user002,user002@example.com

user001 と user002 のアカウントが存在します。
これに user003 ~ user010 を新規で登録したい場合、次のように編集します。*1

DN,objectClass,displayName,userAccountControl,sAMAccountName,userPrincipalName
"CN=user003,OU=POC,DC=example,DC=com",user,user003,512,user003,user003@example.com
"CN=user004,OU=POC,DC=example,DC=com",user,user004,512,user004,user004@example.com
"CN=user005,OU=POC,DC=example,DC=com",user,user005,512,user005,user005@example.com
"CN=user006,OU=POC,DC=example,DC=com",user,user006,512,user006,user006@example.com
"CN=user007,OU=POC,DC=example,DC=com",user,user007,512,user007,user007@example.com
"CN=user008,OU=POC,DC=example,DC=com",user,user008,512,user008,user008@example.com
"CN=user009,OU=POC,DC=example,DC=com",user,user009,512,user009,user009@example.com
"CN=user010,OU=POC,DC=example,DC=com",user,user010,512,user010,user010@example.com

userAccountControl を 512 とした場合、ユーザーは次回ログオン時にパスワードの変更が必要となります。
編集後、ファイルをインポートします。インポートするコマンドは次のとおりです。

PS C:\> csvde -i -f sample.csv

注意点があります。csvde では、パスワードをインポートする事ができないため、デフォルトのグループポリシーでは、以下のエラーが返されます。

サーバー側のエラー "パスワードを更新できませんでした。新しいパスワードとして指定された値は、パスワードの長さ、複雑さ、または履歴に関するドメインの要件を満たしていません。"

回避するには、グループポリシーで「パスワードの長さ」を0文字、「パスワードは、複雑さの要件を満たす必要がある」を「無効」に設定します。
f:id:FriendsNow:20120505212827j:plain

余談ですが、グループポリシー設定後、即時反映させるためには、Active Directory ユーザーとコンピュータ で[F5]をクリックし、既存の表示を最新の情報に更新する必要があります。*2
f:id:FriendsNow:20120505212748j:plain

ldifde 使用例

ldifde を使用して、example.com ドメインの POC 組織の情報をエクスポートするには以下を実行します。

PS C:\> ldifde -f sample.ldif -d "ou=POC,dc=example,dc=com"

エクスポートされた sample.ldif の内容は次のとおりです。※一部属性を省略しています。

dn: CN=user001,OU=POC,DC=example,DC=com
objectClass: top
objectClass: person
objectClass: organizationalPerson
objectClass: user
displayName: user001
userAccountControl: 66048
sAMAccountName: user001
userPrincipalName: user001@example.com

dn: CN=user002,OU=POC,DC=example,DC=com
objectClass: top
objectClass: person
objectClass: organizationalPerson
objectClass: user
displayName: user002
userAccountControl: 66048
sAMAccountName: user002
userPrincipalName: user002@example.com

これに user003 を新規で登録したい場合、次のように編集します。

dn: CN=user003,OU=POC,DC=example,DC=com
objectClass: top
objectClass: person
objectClass: organizationalPerson
objectClass: user
displayName: user003
userAccountControl: 512
sAMAccountName: user003
userPrincipalName: user003@example.com

編集後、ファイルをインポートします。インポートするコマンドは次のとおりです。

PS C:\> ldifde -i -f sample.ldif

以上

*1:編集前 CSV の 2~4 行を削除しない場合、既存ユーザーが存在するため、エラーが発生します。

*2:http://technet.microsoft.com/ja-jp/library/cc754419(v=ws.10).aspx