Powershell檢測AD帳戶密碼過時時間並郵件通知

我記得在罈子裏流傳這一份用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

p_w_picpath

2blog

p_w_picpath

相關文章
相關標籤/搜索