ハードディスクの中に大量のファイルをため込んでいると、ファイルの検索機能を利用する機会が多くなる。それと同じように、Active Directoryでもオブジェクトの数が多くなると、何か設定を確認、あるいは変更する際に、目的のオブジェクトを探すのが大変になるため、検索機能を利用する方が便利だ。

特に、特定の条件に合致するオブジェクトをまとめて処理したい場合、検索機能に頼る方が効率がよい。

Windows Server 2003以降のActive Directoryでは、[Active Directoryユーザーとコンピュータ]管理ツール、あるいはdsqueryコマンドを使用して、指定した条件に合致するオブジェクトを検索できるようになっている。

管理ツールを使用する検索

[Active Directoryユーザーとコンピュータ]管理ツールが備えるクエリ機能では、事前に検索条件を登録しておいて、その検索条件名をクリックするだけで検索結果を表示するようになっている。したがって、特定の条件に合致するオブジェクトを検索する機会が多い場合に重宝するだろう。

検索クエリを登録する際の手順は、以下の通りだ。なお、Windows Server 2008でこの機能を使用する場合、[Active Directoryユーザーとコンピュータ]管理ツールを単独で起動する必要がある。[サーバーマネージャ]内に現れる管理ツールではクエリ機能を利用できない点に注意したい。

  1. [Active Directoryユーザーとコンピュータ]管理ツールを起動する。

  2. 左側のツリー画面で[保存されたクエリ]を選択する。

  3. [操作]-[新規作成]-[クエリ]、あるいは右側の一覧表示部で右クリックして[新規作成]-[クエリ]を選択する。

  4. [新しいクエリ]ダイアログで、作成するクエリの名前と説明を入力してから、[クエリの定義]をクリックする。

  5. 続いて表示するダイアログで、検索条件を指定する。特定の文字列で始まる表示名を持つユーザーアカウントを検索する例と、無効化したユーザーアカウントを検索する例を図に示す。検索対象は[検索]リストボックスで指定する。

オブジェクトの名前や説明を条件に使う場合、検索文字列と、[次の文字で始まる][次の文字で終わる][次の値に完全に一致する][次の値に一致しない][値を持つ][値を持たない]の選択を行うが可能

  1. 検索条件を設定したら、[OK]をクリックして元のダイアログに戻る。もう一度[OK]をクリックすると、作成したクエリ定義が[保存されたクエリ]以下に現れる。

  2. こうして検索クエリを登録すると、それをクリックするだけで検索結果を画面右側に表示するようになる。

作成したクエリ定義をクリックすると、右側に検索結果を表示する

無効化したユーザーアカウントの検索は使用頻度が高いため、独立した設定項目が設けられている。それを実行した結果の例

dsqueryコマンドを使用する検索

Windows Server 2003以降のActive Directoryであれば、dsqueryコマンドで検索する方法も利用できる。コマンド名は、対象がユーザーアカウントならdsquery user、グループならdsquery group、OUならdsquery ou、コンピュータアカウントならdsquery computerといった具合になる。

検索条件となるプロパティは、dsaddコマンドやdsmodコマンドと同様、プロパティ項目を指示する引数と(項目によっては)検索値を記述する方法で指定する。検索対象範囲は、既定値ではドメイン全体を対象とするが、特定のコンテナ・OUに限定する方法も利用できる。

以下にdsqueryコマンドの実行例を示す。

ログオン中のドメインで、ユーザーアカウントをすべて表示

dsquery user

ログオン中のドメインで、無効になっているユーザーアカウントをすべて表示

dsquery user -disabled

ドメイン「ad-domain.company.local」内の、無効になっているユーザーアカウントを表示

dsquery user dc=ad-domain,dc=company,dc=local -disabled

ドメイン「ad-domain.company.local」内のOU「Tokyo」以下にある、すべてのユーザーアカウントを表示

dsquery user ou=Tokyo,dc=ad-domain,dc=company,dc=local

ドメイン「ad-domain.company.local」内にある、すべてのコンピュータアカウントを表示

dsquery computer dc=ad-domain,dc=company,dc=local

ログオン中のドメインにあるコンピュータアカウントのうち、名前が「he~」で始まるものを表示

dsquery computer -name he*

ドメイン「ad-domain.company.local」内にあるグループをすべて表示 :

dsquery group dc=ad-domain,dc=company,dc=local

ドメイン「ad-domain.company.local」内のコンテナ「Users」以下の、名前が「Domain~」で始まるグループをすべて表示

dsquery group cn=users,dc=ad-domain,dc=company,dc=local -name Domain*

ドメイン「ad-domain.company.local」内のOU「Tokyo」以下にあるOUをすべて表示

dsquery ou ou=Tokyo,dc=ad-domain,dc=company,dc=local

ドメインコントローラの検索

dsqueryコマンドには、ドメインコントローラを検索する、あるいは操作マスタの機能を受け持っているドメインコントローラを検索する使い方もある。操作マスタについてはいずれ本連載で取り上げる予定だが、さしあたってここでは、検索する際のコマンド操作例のみを示す。

ログオン中のドメインにある、ドメインコントローラをすべて表示 :

dsquery server

ログオン中のドメインが属するフォレストにある、ドメインコントローラをすべて表示

dsquery server -forest

ログオン中のドメインが属するフォレストにある、スキーママスタの機能を持つドメインコントローラを表示

dsquery server -forest -hasfsmo schema

最後の実行例では、「-hasfsmo」に続いて記述する内容を変えることで、他の操作マスタの機能も検索対象にできる。