Active Directory MMCに保存されたクエリをより効率的に動作させる方法
正直なところ、ADオブジェクトの検索は本当に面倒な場合があります。特に、無効なアカウントをすべて特定したり、特定のコンピュータを除外したり、特定の部署のユーザーリストを取得したりする場合はなおさらです。ADUCコンソールでLDAPフィルターを使用するのは非常に便利ですが、少し面倒なこともあります。特に初心者や、手軽な方法で簡単に操作したい場合にはなおさらです。幸いなことに、保存済みクエリの作成方法を覚えてしまえば、作業ははるかに楽になります。よく使う検索を保存しておき、必要に応じて微調整すれば、毎回最初からすべてを作り直すことなく、すぐに使えるように準備しておくことができます。
念のためお知らせしますが、Windowsの設計上の問題により、これらのクエリの作成と管理には多少の試行錯誤が必要になる場合があります。設定によっては、フィルターや保存したクエリの結果がすぐに表示されない場合があります。マシンを再起動するか、クエリを再インポートすると改善する場合があります。とはいえ、全体的には、普段使用している基準に基づいてADオブジェクトのスナップショットを取得する便利な方法です。それでは、これらのクエリをスムーズに動作させるための一般的な方法を、技術的なヒントも交えながら解説していきましょう。
Active Directory MMCコンソールで保存されたクエリを作成する方法
コンソールを開いて新しいクエリを作成する
- まず、Active Directory ユーザーとコンピューター コンソール ( ) を起動します。ほとんどの Windows Server または RSAT インストールでは、 「管理ツール」
dsa.mscの下にあります。または、検索することもできます。 「保存済みクエリ」を右クリックし、「新規」>「クエリ」を選択します。 - ここでクエリに名前を付けます。「営業部門のアクティブユーザー」のように、意味のある名前を付けてください。保存すると、リストに表示されます。
- 次に、 「クエリルート」でコンテナ(特定のOUやドメインルートなど)を選択します。空白のままにすると、すべてのコンテナが検索対象となり、ドメインが巨大な場合は処理が遅くなる可能性があります。例えば、ブラジルに集中したい場合は、ブラジルのコンテナを選択してください。
- 「クエリの定義」をクリックし、「検索」ドロップダウンから「カスタム検索」を選択します。これにより、AD は LDAP フィルターに基づいて特定のオブジェクトを検索します。
LDAPクエリを賢く使う
- 「詳細設定」タブに切り替えてください。ここで魔法が起こります。「LDAPクエリを入力」というボックスが表示されます。
- ここにLDAPフィルターを貼り付けるか、入力してください。例えば、有効なユーザーアカウントを検索するには、次のように入力します。
(&(objectcategory=person)(objectclass=user)(!userAccountControl:1.2.840.113556.1.4.803:=2))このフィルターは機能しますが、うまく機能しない場合があります。何を探しているかによって大きく異なります。
- 「OK」をクリックしてクエリを保存します。これで、更新またはF5キーを押すと、一致するオブジェクトがリストに表示されるようになります。
表示とエクスポートのオプションをカスタマイズする
- メールアドレス、部署、その他の属性を確認したい場合は、コンソールメニューで「表示」>「列の追加/削除」を選択し、必要な列を追加してください。ある設定では正常に動作しましたが、別の設定では列がすぐに表示されない場合は、コンソールを再起動する必要があるかもしれません。
- リストを右クリックし、「リストをエクスポート」を選択すると、結果をCSVまたはTXT形式でエクスポートできます。レポートや監査に非常に便利です。
保存したクエリをエクスポートして再利用する
保存されたクエリはローカルに保存されますC:\Users\%USERNAME%\AppData\Roaming\Microsoft\MMC\DSA。複数のマシンを同時に使用している場合やバックアップが必要な場合は、「クエリ定義のエクスポート」を使用してクエリをXML形式でエクスポートしてください。その後、他のコンピュータで「クエリ定義のインポート」オプションを使用してインポートします。これにより、毎回最初から作成し直す必要がなくなります。
AD に役立つ LDAP クエリの例
すぐに使えるLDAPフィルターをいくつか知っておくと、時間を大幅に節約できます。以下にいくつかおすすめフィルターをご紹介します。
| あなたが見つけたいもの | LDAPフィルター |
| ユーザー名に「admin」が含まれるユーザー | (objectcategory=group)(samaccountname=*admin*) |
| 説明に「サービス」が含まれるアカウント | (objectcategory=person)(description=*service*) |
| 空のグループ(メンバーなし) | (objectCategory=group)(!member=*) |
| 「パスワード無期限」のユーザーアカウント | (objectCategory=person)(objectClass=user)(userAccountControl:1.2.840.113556.1.4.803:=65536) |
| 3か月間パスワードを変更していないユーザー | (&(sAMAccountType=805306368)(pwdLastSet<=132161330597286610)) |
| 「営業」部門のユーザー | (&(objectCategory=person)(objectClass=user)(department=*sales*)) |
| 「Windows Server」を搭載したコンピュータ | (&(objectCategory=computer)(operatingSystem=Windows Server *)) |
| 無効になったアカウントをすべて検索 | (&(objectCategory=person)(objectClass=user)(!userAccountControl:1.2.840.113556.1.4.803:=2)) |
PowerShell で LDAP フィルターを使用する
PowerShell をご利用の場合(PowerShell をご利用にならない方もいらっしゃるでしょう)、これらのフィルターをGet-ADUser、Get-ADComputer、 などのコマンドレットでも使用できます。 -LdapFilterGet-ADObjectパラメータで LDAP 文字列を指定するだけです。例:
Get-ADUser -LdapFilter "(&(objectCategory=person)(objectClass=user)(department=*Sales*))" | ft -a DisplayName, department
この簡単な方法で、スクリプトの力と洗練されたフィルターを組み合わせることができます。LDAPフィルターが正しく、目的のフィルターと一致していることを確認するだけです。デバッグは少し面倒ですが、この方法で大きな検索パズルを解くことができれば、その価値は十分にあります。
全体として、ADUC での LDAP クエリの作成、保存、使用は必ずしもシームレスとは言えませんが、少しの忍耐があれば状況は一変します。無効化されたアカウントを表示する場合でも、特定のユーザーグループを選択する場合でも、お気に入りのフィルターを保存しておけば、作業がスムーズに進みます。
まとめ
保存したLDAPクエリをあまり手間をかけずに使えるように、これで十分な概要が伝わったかと思います。少し奇妙に感じるかもしれませんが、初期設定さえ済めば、あとは順調です。ただし、クエリXMLファイルのバックアップは必ず取ってください。Windowsは些細なことを過度に複雑にしてしまう癖があるからです。まあ、苦労なくして得るものなしですよね?
まとめ
- 一般的な検索のためにADUCに保存されたクエリを設定する
- LDAPフィルターは慎重に使用してください。うまく機能するまでテストと調整を行ってください。
- クエリを移動する必要がある場合はエクスポートします
- LDAP と PowerShell を組み合わせてスクリプトの魔法をさらに強化
最後に
このプロセス全体は少し面倒に感じるかもしれませんが、正しく実行できれば大幅に時間を節約できます。1つか2つの適切なクエリを実行するだけで、日常的なメンテナンス作業をすべてカバーできます。この方法が、誰かがキーボードに長時間打ち付け続けることを避けるのに役立つことを願っています。