ユーザーを便利に管理する「Search-ADAccount」を使ってみよう

今回は、PowerShellを使ったActiveDirectory管理の中でも、特に使い勝手がよい検索手法をいくつか紹介しよう。特定条件下のユーザーの検索に用いられる「Search-ADAccount」というコマンドレットがそれになる。これにいくつかのパラメーターを組み合わせることで、様々な角度からの検索条件を指定できる。

ログオンしていないユーザーを検索

これは、Microsoft エバンジェリスト 安納順一氏のブログ「フィールドSEあがりの安納です」にもあるテクニックだがログオンしていないユーザーを検索する方法だ。

ユーザーの中には、まったくログオンをしていない人がいる。さぼっているだけならマシだが、退職や離職などの理由により会社に来ていない人なのに、管理者に伝わっていないケースもある。リソースの無駄になるので、定期的にチェックしたいところだ。

直近の30日間ログオンしていないユーザーを検索

Search-ADAccount -AccountInactive -TimeSpan 30 -UsersOnly

「-TimeSpan」が指定した日数(この場合は30日)で、「-AccountInactive」がその期間を指定している。また、この検索オプションで日付を指定することも可能だ。

2010年4月1日以降、ログオンしていないユーザーを検索

Search-ADAccount -AccountInactive -DateTime "04/01/2010" -UsersOnly

この場合「-DateTime」に続く数値は通常、MM「月」DD「日」YYYY「年」とすることで指定する。「"04/01/2010"」となっていれば2010年4月1日だ※1

※1 この値はDateTime 型またはDateTime型にパースできる文字列であればよい。したがって、「(get-date).adddays(-10)」(10日前)や「”2010/4/10”」(2010年4月10日) といった形式でも指定することができる。このあたりの柔軟性はPowerShellの大きな特徴1つだ。

有効切れのアカウントや無効化されたアカウントを検索

PowerShellによる管理をおこなう以前に、有効期限が切れてしまった、あるいは無効化されたアカウントの検索には「-AccountExpired」(有効期限の切れたアカウント)か、「-AccountDisabled」(無効化されたアカウント)を使う。数か月に一度といった割合でしかメンテナンスしてないケースでは、このパラメーターが必須となるので、しっかりメモしておこう。

すでに有効期限が切れたユーザーを検索

Search-ADAccount -AccountExpired -UsersOnly

すでに無効化されたユーザーを検索

Search-ADAccount -AccountDisabled -UsersOnly

コンピュータとユーザーを個別に指定する

いくつかのサンプルの最後尾についているコマンドレット「-UsersOnly」は、ユーザーのみを検索対象にするためのパラメーターで、これを指定しない場合、コンピュータアカウントも同時に検索される。逆にコンピュータのみを検索対象にしたければ、この部分を「-ComputersOnly」に置き換えよう。これはActiveDirectoryのPowerShellによる検索手法のすべてに使えるのでぜひ覚えておいて欲しい。