質問: getobject("ldap://cn=suzuki,ou=ou123_ユーザー,ou=ou123,dc=ad,dc=test,dc=com") ad:ad.test.com ou:ou123→ou123_ユーザー ou123_ユーザー配下のすべてのユーザ情報を取得する場合には、どのようにすればよろしいでしょうか?
回答: 質問文に書いてある単一ユーザーを取得する書き方に沿えばこんな感じかなぁ。 dim objou, objuser set objou = createobject("ldap://ou=ou123_ユーザー,ou=ou123,dc=ad,dc=test,dc=com") objou.filter = array("user") for each objuser in objou debug.print objuser.name next 複数のアカウントを取得するので adodb で db のように取り扱うこともできそう。(ちょっと長いけど) dim objconn, objcomm, objrst set objconn = createobject("adodb.connection") set objcomm = createobject("adodb.command") objconn.provider = "adsdsoobject" objconn.open "active directory provider" set objcomm.activeconnection = objconn objcomm.properties("page size") = 1000 ' 検索結果の最大取得数 objcomm.properties("searchscope") = 1 ' この ou の配下も全部なら 2 を指定 objcomm.commandtext = "select name from 'ldap://ou=ou123_ユーザー,ou=ou123,dc=ad,dc=test,dc=com' where objectcategory='user'" set objrst = objcomm.execute objrst.movefirst do until objrst.eof debug.print objrst.fields("name").value objrst.movenext loop 私は今まで excel でアカウントの台帳を作っていたので、これを元に active directory を操作できないかと考えていたのですが、最近になって考え方を改めました。 台帳はあくまでも active directory なので、ユーザーのリストがほしければ都度取得すればいいじゃないか、と。 アカウント登録や変更も、[対象アカウントの存在確認] → [更新] をすりゃいいじゃないか、と。 それで excel 台帳による二重管理を捨て、powershell によるいくつかのスクリプト ファイルを作っているところです。 一覧を取得するだけなら以下の 1行でできちゃいますし。 get-aduser -filter * -searchbase "ou=ou123_ユーザー,ou=ou123,dc=ad,dc=test,dc=com" -properties * -searchscope onelevel | foreach-object { $_.name}