ログインしてさらにmixiを楽しもう

コメントを投稿して情報交換!
更新通知を受け取って、最新情報をゲット!

Active DirectoryコミュのVBScriptを使用してAD内の特定のユーザーを検索したい

  • mixiチェック
  • このエントリーをはてなブックマークに追加
こんな記事がありました。

・最近ログオンしていないユーザーを検索する とっても簡単な方法
http://blogs.technet.com/junichia/archive/2009/11/18/3294680.aspx

Windows Server 2008ではこんな便利なことができるという記事ですが、残念ながら当方が扱うのはWindows Server 2003 R2の環境です。
この環境で上記記事に載っているような検索(既に無効化されたアカウントの検索 等)を行う際の方法について相談させてください。

【環境】
OS:Windows Server 2003 R2
台数:2台(マルチマスター複製)

【相談したいこと】
1.LDAPを用いたユーザー検索手法について
2.LDAPを用いたユーザプロパティへのアクセスについて
3.DCが2台ある環境における注意事項について

---

1.LDAPを用いたユーザー検索手法について
ADに属す全ユーザーから特定の条件を満たす(無効化されている等)ユーザを探すスクリプトの基本構造について教えてください。
以下のように2箇所にLDAP問合せを記述する構成で考えているのですが、これが一般的なのでしょうか?(もっと簡単にできますか?)

(前段の定義部分は省略)
objCommand.CommandText = _
"<LDAP://dc=test,dc=local>;(objectCategory=User);sAMAccountName,distinguishedName;Subtree"
Set objRecordSet = objCommand.Execute

objRecordSet.MoveFirst
Do Until objRecordSet.EOF

Set objUser = GetObject("LDAP://" & objRecordSet.Fields("distinguishedName").Value)

If objUser.AccountDisabled = True Then
Wscript.Echo objRecordSet.Fields("sAMAccountName").Value
End If

objRecordSet.MoveNext
Loop

2.LDAPを用いたユーザプロパティへのアクセスについて
例えば、上記スクリプトの2行目を
"<LDAP://dc=test,dc=local>;(objectCategory=User);sAMAccountName,distinguishedName,AccountDisabled;Subtree"
としてもうまく動きません。
LDAPを使って取得することができるプロパティにはどのようなものがあって、それぞれをどう使い分けるのかが分かっていない状態です。

上記のスクリプトでは、sAMAccountName、distinguishedName、AccountDisabledといったプロパティを使っていますが、使えるプロパティの一覧(及びその意味)がまとめられているサイトはないでしょうか?

3.DCが2台ある環境における注意事項について
上記スクリプトでは、LDAPの問合せ対象はADになると思います。
しかし属性の中にはDC間でレプリケートされないものもあると認識しています(例えばlastLogonTimestamp属性)。
このような属性については、AD単位の問合せではなく、DC単位の問合せが必要になると考えています。
例えば、ユーザーの最終ログオン時間は、各DCに対する問合せを行った結果得られる時間のうち、最も新しい時間がそれにあたると考えることができます。
このように、複数のDCで構成する場合に注意が必要になる属性にはどんなものがありますか?(net userコマンドやVBスクリプトによって読み"書き"できる情報はDC内で全て統一されていると考えて差し支えないでしょうか?)

以上です。

コメント(1)

良くわかんないですけど、ここら辺見とけば?

http://www.microsoft.com/japan/technet/scriptcenter/scripts/ad/users/default.mspx

接続する先のDCサーバーを指定するのは、"LDAP://" と "CN〜" のクエリの間に接続するサーバー名を指定すればいけるような気しますけど、もう良く覚えていないや。

Active Directory にプログラム的にアクセスするっていうのは、深くを知りたければ ADSI というのを理解する必要があるのですけど、そこまで苦しんで理解しなくても先のサンプルスクリプト一覧で出来る範囲で考えるのが大人の対応。

一応ADSIのドキュメントは以下。

http://msdn.microsoft.com/en-us/library/aa772218(VS.85).aspx

ログインすると、みんなのコメントがもっと見れるよ

mixiユーザー
ログインしてコメントしよう!

Active Directory 更新情報

Active Directoryのメンバーはこんなコミュニティにも参加しています

星印の数は、共通して参加しているメンバーが多いほど増えます。