腳本主要實現了兩個功能 :
一能判斷賬戶密碼的過期時間并通過郵件通知到賬戶;
二是將這些即將過期的賬戶信息累計通知到管理員。
腳本如下:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 | ############################################ #Author:Lixiaosong #Email:lixs@ourgame.com;lixiaosong8706@gmail.com #For:檢測AD密碼過期時間并郵件通知 #Version:1.0 ############################################## Import-Module ?Activedirectory $alladuser = get-aduser ?-searchbase? "OU=IT,DC=contoso,DC=com" ?- filter ?*??|?%{ $_ .Samaccountname} $userlist ?=?@() ################################################# #檢測AD密碼過期時間并郵件通知相應賬戶 ################################################## foreach ?( $user ?in ?$alladuser ){ #密碼最后一次更改時間 $pwdlastset = Get-ADUser ?$user ?-Properties?*?|?%{ $_ .passwordlastset} #密碼的過期時間 $pwdlastday =( $pwdlastset ).adddays(90) #當前時間 $now = get-date #判斷賬戶是否設置了永不過期 $neverexpire = get-aduser ?$user ?-Properties?*?|%{ $_ .PasswordNeverExpires} #距離密碼過期的時間 $expire_days =( $pwdlastday ?-? $now ).Days #判斷過期時間天小于15天的并且沒有設置密碼永不過期的賬戶 if ( $expire_days ?-lt ?15? -and ?$neverexpire ?-like ?"false" ?){ ???? $chineseusername =? Get-ADUser ?$user ??-Properties?*?|?%{ $_ .Displayname} ???? #郵件正文 ???? $Emailbody = "親愛的?$chineseusername?同學?: ???? 您的域賬戶和郵箱密碼即將在?$expire_days?天后過期,?$pwdlastday?之后您將無法登陸計算機和收發郵件,請您盡快更改。 ???? 重置密碼過程請遵循以下原則: ???? ○密碼長度最少?8?位; ???? ○密碼可使用最長時間?90天,過期需要更改密碼; ???? ○密碼最短使用?1天(?1?天之內不能再次修改密碼); ???? ○強制密碼歷史?3個(不能使用之前最近使用的?3?個密碼); ???? ○密碼符合復雜性需求(大寫字母、小寫字母、數字和符號四種中必須有三種、且密碼口令中不得包括全部或部分用戶名) " Send-MailMessage ?-from? "it@contoso.com" ?-to? "$user@contoso.com" ?-subject? "您的賬戶密碼即將過期" ?-body? $Emailbody ?-Attachments?D:\script\如何更改域用戶密碼.pptx?-smtpserver?mail.contoso.com?-Encoding?( [System.Text.Encoding] ::UTF8) ############################################# #查找賬戶的密碼過期時間并發送至管理員賬戶 ############################################# $username = Get-ADUser ?$user ??-Properties?* $userobject = New-object ?psobject $userobject ?|? Add-Member ?-membertype?noteproperty?-Name?用戶名????????????-value? $username .displayname $userobject ?|? Add-Member ?-membertype?noteproperty?-Name?郵箱??????????????-Value? $username .mail $userobject ?|? Add-Member ?-membertype?noteproperty?-Name?最后一次密碼設置??-Value? $username .Passwordlastset $userobject ?|? Add-Member ?-membertype?noteproperty?-Name?密碼過期時間??????-Value? $pwdlastday $userobject ?|? Add-Member ?-membertype?noteproperty?-Name?距離密碼過期天數??-Value? $expire_days $userlist += $userobject } } $EmailbodyHTML = $userlist | sort-object ?距離密碼過期天數?| ConvertTo-Html ?| Out-String Send-Mailmessage ?-from?? "it@contoso.com" ?–to?“itmanager @contoso ”?-Bodyashtml? $EmailbodyHTML ?-Subject? "管理員通知" ?-smtpserver?mail.contoso.com?-Encoding?( [System.Text.Encoding] ::UTF8) |
實現的結果:
用戶接收到的郵件:
管理員接收到的郵件:
本文出自 “運維人生” 博客,請務必保留此出處http://lixiaosong.blog.51cto.com/705126/1409113
本文轉自 lorysun 51CTO博客,原文鏈接:http://blog.51cto.com/lorysun/1611061