Blog/ブログ

PCTトップページ>技術情報をお届け>Active Directory オブジェクト 精査について

SEの現場から技術情報を

line

Active Directory オブジェクト 精査について

2016.06.07

認証基盤として、ActiveDirectoryを導入されている企業は多いと思います。
ドメイン統合、人事異動、パソコン入替などにより不要なユーザーアカウントなどのオブジェクトは残っていませんでしょうか?
 
 
私はインフラ業務を担当しているのですが、お客様よりこのような質問を受けたことがありました。
 
 
「Active Directory上に不要なユーザーが結構あるので、長期間利用していないユーザーやコンピュータを識別して削除を行いたい。」
 
 
確認したところ、「Active Directory ユーザーとコンピュータ」などのGUIツールでは最終アクセス日などの検索項目がなく、抽出することが出来ませんでした。
 
そこで、コマンドレベルでの抽出方法を確認すると、Active Directory管理用コマンド「dsquery」で抽出が出来そうでした。
下記画像1のように
「dsquery user -inactive xx 」
「dsquery computer -inactive xx 」
と入力し、パラメータ –inactive の“XX”に利用していない週数を指定することにより抽出ができました。
 
※画像:1
ActiveDirectory
 
 
しかし、最終アクセス日が分からず、出力結果も識別名(DN)で表示され少々見づらい難点もありました。
そこで、他の方法がないか確認しましたところ、PowerShellで詳細な抽出が出来そうであり、またどんな感じで抽出されるのか興味もあり、PowerShellで試してみました。
 
「Get-ADUser」または「Get-ADComputer」コマンドレットを使って、Active Directoryのユーザー情報およびコンピュータの抽出が出来ました。
※以下の画像2では、ADユーザーのみ抽出。
 
Get-ADUser [-Identity]  ・・・特定のユーザーを指定
 

例:Get-ADUser –Identity S-1-5-21-3488863001-1657078567-2963466874-500
  -identityでは下記属性値を指定可能
   ・識別名
   ・GUID
   ・セキュリティ識別子
   ・SAMアカウント名

 
※画像:2
ActiveDirectory
 
 
 
Get-ADUser -Filter      ・・・ 検索の条件を指定
例:Get-ADUser –Filter { mail –like “Administrator*” }
メールアドレスが“administrator”で始まるユーザーを抽出
 
※画像:3
ActiveDirectory
 
 
 
今回の目的は、最終ログオン日を確認することなので、全ユーザー情報から最終ログオン日を抽出する方法を確認しました。
 
get-aduser –filter * -property * | select name、lastlogondate
 
get-aduserで抽出した情報を「| (パイプ)」を利用し、Select-Objecte(select)コマンドレットへ引き渡し、出力オブジェクトの選択を行います。
下記画像4の例では、「Name、LastLogonDate」を選択。
 
※画像:4
ActiveDirectory
 
 
 
また、出力結果をCSV形式で保存することも可能です。(画像5)
 
get-aduser -filter * -property * | select name,lastlogondate | export-csv -path c:\temp\aduser.csv -encoding default
-pathで指定したファイルに出力されます。(画像6)
 
※画像:5
ActiveDirectory
 
 
※画像:6
ActiveDirectory
 
 
 
出力したファイルをExcel等で加工し、ログオンを数年行っていないユーザーの確認等ADオブジェクトの精査が可能となります。
その他、「New-ADUser」、「Set-ADUser」、「Remove-ADUser」等のコマンドレットもありますのでユーザー作成、削除、属性情報の修正も可能です。
 
 
今回は、情報抽出でしたが今後は属性情報の修正等もPowerShellで試してみようと思います。
興味がある方は色々と試されてはいかがでしょうか。
 
 
 

line

pagetop