2011年8月9日火曜日

◆ActiveDirectory、有効期限の切れるユーザーを取得する

有効期限を判定するには「accountExpires」プロパティを使えば良さそうだ。
試した環境では、期限が設定されていないユーザーの「accountExpires」がゼロになってるケースが何件かあったのでそれも条件に加えている。

以下では40日以内に有効期限が切れるユーザーを抽出して管理者宛にメールしている。
「accountExpires」はPowerShell: ◆ActiveDirectory、コンピュータ一覧を取得するで使ったDateTime型のメソッドを関数化して変換している。

001
002
003
004
005
006
007
008
009
010
011
012
013
014
015
016
017
018
019
020
021
022
023
024
025
026
027

$Month = ((Get-Date).AddDays(40)).ToFileTime()  #40日後
$target = "OU=hogeOU,DC=xx,DC=giants,DC=co,DC=jp"

$user = @()
$user =
 
 
Get-ADUser -Filter {(accountExpires -lt $Month) -and (accountExpires -ne 0
)} `
 
-SearchBase $target -Properties accountExpires |
 
 
select name,@{name="有効期限";expression={Get-I-FTime($_.accountExpires)} } 

$userStr = $user | fl | Out-String

$body = 
@"
ADサーバー管理ツールからの自動報告メールです。

以下のIDの有効期限が迫っています。

$userStr
"@


if($user.Count){
Send-MailMessage    -To "<hara_tatsunori@giants.co.jp>"
 `
               
-From "AD管理者 <admin@giants.co.jp>"
 `
               
-Subject "AD管理報告"
 `
               
-SmtpServer "mserver.giants.co.jp"
 `
               
-Body $body
 `
               
-Encoding  ([System.Text.Encoding]::Default)
}

0 件のコメント:

コメントを投稿