Active Directoryユーザとコンピュータで無効ユーザだけ抽出する

Windows Server 2003 R2の「Active Directoryユーザとコンピュータ」の中で、アカウントのプロパティとして「アカウントは無効」にチェックが入っているユーザーだけ見たいと思うことが時々あるじゃん。
それでその一覧をエクスポートしたい。



2008だったらPowerShellとかでチョイチョイっとやればなんとかなるのかもしれないけど、それは置いといて
あの画面の中でフィルタをかけたいと思うことがあるじゃないですか。ない?そうですか。


単純に、Active DirectoryユーザとコンピュータのMMCコンソール内にフィルタというのがあるけど、
フィルタ条件を書く画面の「カスタムの検索条件」には上記「アカウントは無効」のオンオフで絞込みができるようなものは入っていない。


で、その絞り込み方には2種類あることが判明した。

ひとつ目のやり方:保存されたクエリ

あとでめんどくさいやり方も紹介するが、もしこちらのやり方でやりたいことができるなら
こっちのほうがかんたん

1.「保存されたクエリ」のところで右クリック→「新規作成」→「クエリ」を選ぶ


2.「名前」をなんかいれる


3.「クエリの定義(E)...」を押す


4.「ユーザー」タブで「無効になっているアカウント」にチェックを入れて「OK」を押す


5.特定のグループの下にいるユーザーだけを対象にしたい場合は
  「クエリルート」の「参照」を押してグループとかOUを選んでOK


6.OKを押す


7.保存されたクエリのところを展開して、今作ったやつを押すとずらりと出てくる


8.このままユーザーを選択してプロパティの変更もできるし
  ツールバーにしかないコマンド「一番をエクスポート」を押せば、表示中のユーザ一覧を
  この絞り込み条件を保ったままタブ区切り形式のエクスポートなどができる。


ふたつ目のやり方:フィルタ(LDAPクエリ)

こっちはちょっとめんどくさいけど、やりたいことに一番近いやり方。

1.フィルタボタンを押す


2.「カスタムフィルタの作成」にチェックを入れる


3.「カスタマイズ」ボタンを押す


4.「詳細設定」タブを開く


5.LDAPクエリに以下を入力、OKを押す

(&(&(objectCategory=person)(objectClass=user))(userAccountControl:1.2.840.113556.1.4.803:=2))

※改行されているようにみえるが実際には1行なのでご注意を

6.無効ユーザーが入っているであろうグループを選択する(たとえば「Users」、あるいはOUなど)
  無効ユーザーだけが出る。なお、下で赤で囲っているように「フィルタアクティブ」という表示が出る。


先ほどの手順と違って、フィルタがかかっているだけなのでグループごとに見ることができる。
これをメリットと思うかデメリットと思うかはやろうとしていること次第と思うが。


7.保存クエリと同様、ユーザーのプロパティを見ていじったり一覧のエクスポートが可能。

意外と知られていない「一覧のエクスポート」


8.満足したら、再びフィルタボタンを押して「カスタムフィルタの作成」を「すべての種類のオブジェクトを表示」に戻してOKを押す。

  ちなみに、これをしても先ほどのLDAPクエリ文字列は消えずに保持されるので
  「カスタムフィルタの作成」に戻すだけで無効ユーザーの一覧を表示させることができるが
  クエリが残ったままになるのがイヤだという特殊な需要をお持ちのかたは、
   カスタムフィルタの作成のままカスタマイズボタン→詳細設定→クエリ文字列をすべてDelete
   →OK→「すべての種類のオブジェクトを表示」に戻す→OKと操作することで
   本操作を実行する前の状態に完全に復元できる。


ちなみに以下のクエリを使うことで、逆に「アカウントは無効にチェックが入っていないユーザー」の一覧も出せる。

(&(&(objectCategory=person)(objectClass=user))(!userAccountControl:1.2.840.113556.1.4.803:=2))

※改行されているようにみえるが実際には1行なのでご注意を

違いは、エクスクラメーションマークの有無だけである。(条件が逆転しているだけ)


どちらのやり方がいいのか

使い勝手をそのままに、というか、グループごとに無効ユーザだけ見たい場合はフィルタのやり方のほうがいい。
アカウントが無効じゃないユーザー(つまり有効なユーザ)の一覧を出したいときもフィルタのほうがいい。
それ以外は保存クエリのほうがいい。


保存クエリのやり方が有利なのは

  • グループは関係なしにドメイン全体で無効なユーザ一覧の抽出がしたい
  • コンピュータアカウントの無効になっているやつも抽出したい(多分やろうと思えばLDAPクエリでもできそう)
  • クエリを保存しておくことで後からすぐによびだせる


フィルタのやり方が有利なのは

  • 「アカウントは無効」にチェックが入っていないリストも出せる(保存クエリのほうではできなさそう)
  • グループごとに無効アカウントの一覧が出せる
    • 保存クエリのやり方でも、クエリルートを変更することでグループの絞り込みは可能だが、いろんなグループをパッパッと切り替えながら見たい場合は絞りこまれてはいるが、画面の見た目は変わっていないフィルタのほうがやりやすい。