- - PR -
AD登録データエクスポート時のコミットについて
投稿者 | 投稿内容 | ||||
---|---|---|---|---|---|
|
投稿日時: 2008-03-20 13:19
いつもお世話になっております。
ActiveDirectory情報をVBSにてエクスポートを行なっています。 (主にname,memberof,sAMAccountName,distinguishedName ) 複数階構造のユーザー、グループを出力しているのですが新規にグループを 作成したデータがエクスポートデータから漏れてしまいます。 確認している分では一週間以上前の登録データは反映されているようです。 ADのデータベースに登録された情報をコミットする方法等あるのでしょうか? もしくは作成したVBSに誤りがあるのでしょうか? 以下にソースを転記します。 ------------------------------ const dm = " ドメイン名を指定する(コンピュータ名ではない)” main() Sub main Set cn = CreateObject("ADODB.Connection") Set rs = CreateObject("ADODB.Recordset") cn.Provider = "ADsDSOObject" cn.Open "Active Directory Provider" strHeader = "Cn;SamAccountName;Name;DistinguishedName" strSql = "select name,memberof,sAMAccountName,distinguishedName from 'LDAP://" & dm &"' WHERE objectClass = 'user' or objectClass = 'group'" rs.Open strSql, cn WScript.echo strHeader Do Until rs.EOF If Not IsNull(rs("memberof")) Then For Each gp In rs("memberof").Value WScript.Echo GetOneName(cn, gp) & ";" & rs("sAMAccountName") & ";" & rs("name") & ";" & rs("distinguishedName") Next Else 'WScript.Echo "なし;" & rs("sAMAccountName") & ";" & rs("name") & ";" & rs("distinguishedName") End If rs.MoveNext Loop End Sub ---------------------------------------- 不具合内容:新規登録グループが出力対象から外れる。 なおCSVDEで出力した結果を見ると問題なく登録されています。 どうかご教示ねがいます。 [ メッセージ編集済み 編集者: S41 編集日時 2008-03-20 13:22 ] | ||||
|
投稿日時: 2008-03-20 14:01
どこの DC から data とってきているのですかね?
DC を指定して query を投げていないので、DC 間の同期が間に合わない timing で取得しちゃっているんじゃないですか? FSMO である DC を指定して query 投げたら問題ないんじゃないかな。 _________________ | ||||
|
投稿日時: 2008-03-20 15:08
ちゃっぴさん早速のご返答感謝です。
DC名は指定しているのですがうまくいかないのです。 FSMOであるサーバーを指定(ホスト名)を指定するということなのでしょうか? 'LDAP://" & aaa.bbb.local &" (※aaa.bbbはドメイン名) この形式では問題あるのでしょうか?? | ||||
|
投稿日時: 2008-03-20 20:29
そういうことです。 Host を指定しない場合にはどこの Domain Controler を利用されるかわかりませんね。 LDAP ADsPath 上記に書かれているので参考にしてください。 _________________ | ||||
|
投稿日時: 2008-03-21 13:28
ご回答感謝です。
ご指摘の通り LDAP://host.aaa.bbb (※aaa.bbbはドメイン名) 行なってみたのですが結果は同じでした・・・ 自社構築ADの2台それぞれ指定してやってみたのですがダメでした。 なにがおかしいんでしょうね… | ||||
|
投稿日時: 2008-03-21 16:18
既定では、Active Directory に対してクエリを実行すると、最初の 1,000 件しか返されません。
とかではないでしょうか? | ||||
|
投稿日時: 2008-03-21 20:18
ぴよこさん
ご回答ありがとうございます。早速実行してみましたが・・・私のやり方がまずいのか表示はやっぱりされませんでした・・・。下記の記述なにか間違っていますでしょうか? ------------------------------------------------------- const dm = "******.AAAA.BBBB.local" ' ドメイン名指定 Const ADS_SCOPE_SUBTREE = 2 main() Sub main Set cn = CreateObject("ADODB.Connection") Set rs = CreateObject("ADODB.Recordset") Set objCommand = CreateObject("ADODB.Command") cn.Provider = "ADsDSOObject" cn.Open "Active Directory Provider" Set objCommand.ActiveConnection = cn objCommand.Properties("Page Size") = 1000 objCommand.Properties("Searchscope") = ADS_SCOPE_SUBTREE strHeader = "Cn;SamAccountName;Name;DistinguishedName" strSql = "select name,memberof,sAMAccountName,distinguishedName from 'LDAP://" & dm &"' WHERE objectClass = 'user' or objectClass = 'group'" rs.Open strSql, cn WScript.echo strHeader Do Until rs.EOF If Not IsNull(rs("memberof")) Then For Each gp In rs("memberof").Value WScript.Echo GetOneName(cn, gp) & ";" & rs("sAMAccountName") & ";" & rs("name") & ";" & rs("distinguishedName") Next Else 'WScript.Echo "なし;" & rs("sAMAccountName") & ";" & rs("name") & ";" & rs("distinguishedName") End If rs.MoveNext Loop End Sub Function GetOneName(cn, dn) Set rs = CreateObject("ADODB.Recordset") strSql = "select name from 'LDAP://" & dn & "'" rs.Open strSql, cn GetOneName = rs(0) End Function | ||||
|
投稿日時: 2008-03-21 22:10
う〜む。どうやって登録したんでしょうね?
ちなみに DC の Windows の version はなんでしょう?2003 ですか? _________________ |