有効期限を判定するには「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 件のコメント:
コメントを投稿