我記得在罈子裏流傳這一份用PS1.0版本實現此功能的腳本原本想直接使用,但竟然發現不會用呵呵。html
後來一想直接寫一個得了,此腳本主要實現了兩個功能 :併發
一能判斷帳戶密碼的過時時間並經過郵件通知到帳戶,二是將這些即將過時的帳戶信息累計通知到管理員。ide
############################################ #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)
實現的結果:
server
1htm
2blog