溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊(cè)×
其他方式登錄
點(diǎn)擊 登錄注冊(cè) 即表示同意《億速云用戶(hù)服務(wù)條款》

powershell實(shí)現(xiàn)域用戶(hù)密碼到期郵件提醒功能

發(fā)布時(shí)間:2020-07-26 18:53:48 來(lái)源:網(wǎng)絡(luò) 閱讀:9223 作者:brucesuncool 欄目:系統(tǒng)運(yùn)維

最近要實(shí)現(xiàn)域用戶(hù)密碼到期后,自動(dòng)發(fā)郵件提醒的功能。感覺(jué)用powershell實(shí)現(xiàn)起來(lái)比較方便。

查到的資料大多都是AD和Exchange安裝在一起,不實(shí)用。

下面的代碼是整合了網(wǎng)上的資料,實(shí)際可以運(yùn)行的代碼。

主要參考了:http://www.nibayuan.com/2014/12/31/task-ad-password-expires-email/

http://blog.csdn.net/andrewniu/article/details/52594318


說(shuō)明:

  1. 服務(wù)器為windows server 2012 r2 std 中文版

  2. 此服務(wù)器只是DC,無(wú)其它功能。



Import-Module Activedirectory
$alladuser=get-aduser -searchbase "ou=xxx,dc=xxxxx,dc=xxxx" -filter *  | %{$_.Samaccountname}
#上面的“ou=***,dc=***,dc=***” 根據(jù)自己域結(jié)構(gòu)實(shí)際情況填寫(xiě)
$userlist = @()

echo $alladuser#顯示所有用戶(hù)

#echo $userlist
$itmag = "xxxxx@xxxxxx.com" #IT管理員的郵件地址

function sendmail($mailaddr,$body) #定義發(fā)送郵件的方法
{  
$msg=New-Object System.Net.Mail.MailMessage  
$msg.To.Add($mailaddr)  
#$msg.Bcc.Add($itmag)#抄送給管理員
$msg.From = New-Object System.Net.Mail.MailAddress("xxxxx@xxxxxx.com", "xxxx",[system.Text.Encoding]::GetEncoding("UTF-8"))   #發(fā)件人
$msg.Subject = "郵件密碼即將過(guò)期提醒"  
$msg.SubjectEncoding = [system.Text.Encoding]::GetEncoding("UTF-8")  
$msg.Body =$body  
#$Attachments=New-Object System.Net.Mail.Attachment("D:\Documents\xxxx.zip")#創(chuàng)建附件  
#$msg.Attachments.add($Attachments) #添加附件,英文名可多個(gè),中文名就只能帶一個(gè)。  
$msg.BodyEncoding = [system.Text.Encoding]::GetEncoding("UTF-8")  
$msg.IsBodyHtml = $false#發(fā)送html格式郵件  
#$msg.Priority = [System.Net.Mail.MailPriority]::High  
$client = New-Object System.Net.Mail.SmtpClient("smtp.xxxxxxx.cn")  #配置smtp服務(wù)器
$client.Port = 587#指定smtp端口
$client.EnableSsl = $true #帶ssl功能的smtp服務(wù)器
$client.UseDefaultCredentials = $false  
$client.Credentials=New-Object System.Net.NetworkCredential("xxxx@xxx.com", "*********")  
try {$client.Send($msg)}  
    catch [Exception]
    {$($_.Exception.Message)  
    $mailaddr  
    }
}  


foreach ($user in $alladuser)
{
#密碼最后一次更改時(shí)間
$pwdlastset=Get-ADUser $user -Properties * | %{$_.passwordlastset}
#密碼的過(guò)期時(shí)間
$pwdlastday=$pwdlastset.AddDays(90)
#當(dāng)前時(shí)間
$now=get-date
#判斷賬戶(hù)是否設(shè)置了永不過(guò)期
$neverexpire=get-aduser $user -Properties * |%{$_.PasswordNeverExpires}
#距離密碼過(guò)期的時(shí)間
$expire_days=($pwdlastday - $now).Days
#判斷過(guò)期時(shí)間天小于5天大于-5天(即已過(guò)期5天)的并且沒(méi)有設(shè)置密碼永不過(guò)期的賬戶(hù)
if($expire_days -lt 5 -and $expire_days -gt -5 -and $neverexpire -like "false" )
{
$chineseusername= Get-ADUser $user  -Properties * | %{$_.Displayname}
#郵件正文
$Emailbody=
"Dear $chineseusername :
您的郵箱密碼即將在 $expire_days 天后過(guò)期,請(qǐng)您盡快更改。
更改密碼請(qǐng)遵循以下原則:
○密碼長(zhǎng)度最少 8 位;
○密碼可使用最長(zhǎng)時(shí)間 90天,過(guò)期需要更改密碼;
○密碼最短使用 1天( 1 天之內(nèi)不能再次修改密碼);
○強(qiáng)制密碼歷史 3個(gè)(不能使用之前最近使用的 3 個(gè)密碼);
○密碼符合復(fù)雜性需求(大寫(xiě)字母、小寫(xiě)字母、數(shù)字和符號(hào)四種中必須有三種、且密碼口令中不得包括全部或部分用戶(hù)名)
"

$tomailaddr = $user + "@xxxx.com"
#echo $tomailaddr
sendmail $tomailaddr $Emailbody
}

}

向AI問(wèn)一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀(guān)點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長(zhǎng)郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI