Active Directory内のユーザやグループなどは管理ツール「Active Directory ユーザとコンピュータ」で管理しますが、主に次のオブジェクトを管理します。
・ユーザ
・グループ
・コンピュータ
・組織単位(OU)
・プリンタ
・共有フォルダ
サンプルアプリはこれらのオブジェクトを対象とします。
前回、Active Directory 内のユーザやグループを検索するコードを書きました。
その際、検索フィルタを指定しましたが SQL同様、色々指定できます。
LDAP書式で 「(属性=値)」のように書きます。
AND条件は「&」、OR条件は「|」、否定は「!」です。
例
De で始まるグループ
"(&(objectCategory=Group)(name=De*))"
XP か 2008 のコンピュータ
"(&(objectCategory=Computer)(|(operatingSystem=*XP*)(operatingSystem=*2008*)))"
一課のOU(組織単位)
"(&(objectCategory=OrganizationalUnit)(name=一課)"
本社以外でカラーか1分間に30枚以上印刷できるプリンタ
"(&(objectCategory=PrintQueue)(!location=本社)(|(printColor=True)(printPagesPerMinute>=30)))"
MyServer の共有フォルダ
"(&(objectCategory=Volume)(uNCName=\\MyServer\*))"
属性は DirectoryEntry.Properties プロパティで指定するプロパティ名と同じです。
一般的なプロパティ名であれば、このプロパティの PropertyNames プロパティを列挙すればプロパティ名が判ります。
また、プロパティ値は同じく Item プロパティ(PropertyValueCollection クラスのインスタンス)の Value プロパティで取得できます。
この Value プロパティは Object 型なんですが、内部で保持してる要素の数によって返される値が異なります。
・要素の数が 0: null
・要素の数が 1:その要素の値
・要素の数が複数:各要素の値の配列のコピー
「要素の数が複数」というのは、objectClass のように複数の値(Object 型の配列)だったり、objectGUID のように値としては1つだけど Byte 型の配列になってたり、というのがあります。
ドメインコントローラが Windows server 2008 だと管理ツール「Active Directory ユーザとコンピュータ」から確認することができます。
「表示」メニューの「拡張機能」にチェックを入れた状態で、ユーザやグループなどのオブジェクトのプロパティを表示すると「属性エディタ」タブが表示されます。
これを見ると、属性の名前とその値を確認できます。