您好,登錄后才能下訂單哦!
最近要實現域用戶密碼到期后,自動發郵件提醒的功能。感覺用powershell實現起來比較方便。
查到的資料大多都是AD和Exchange安裝在一起,不實用。
下面的代碼是整合了網上的資料,實際可以運行的代碼。
主要參考了:http://www.nibayuan.com/2014/12/31/task-ad-password-expires-email/
http://blog.csdn.net/andrewniu/article/details/52594318
說明:
服務器為windows server 2012 r2 std 中文版
此服務器只是DC,無其它功能。
Import-Module Activedirectory
$alladuser=get-aduser -searchbase "ou=xxx,dc=xxxxx,dc=xxxx" -filter * | %{$_.Samaccountname}
#上面的“ou=***,dc=***,dc=***” 根據自己域結構實際情況填寫
$userlist = @()
echo $alladuser#顯示所有用戶
#echo $userlist
$itmag = "xxxxx@xxxxxx.com" #IT管理員的郵件地址
function sendmail($mailaddr,$body) #定義發送郵件的方法
{
$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")) #發件人
$msg.Subject = "郵件密碼即將過期提醒"
$msg.SubjectEncoding = [system.Text.Encoding]::GetEncoding("UTF-8")
$msg.Body =$body
#$Attachments=New-Object System.Net.Mail.Attachment("D:\Documents\xxxx.zip")#創建附件
#$msg.Attachments.add($Attachments) #添加附件,英文名可多個,中文名就只能帶一個。
$msg.BodyEncoding = [system.Text.Encoding]::GetEncoding("UTF-8")
$msg.IsBodyHtml = $false#發送html格式郵件
#$msg.Priority = [System.Net.Mail.MailPriority]::High
$client = New-Object System.Net.Mail.SmtpClient("smtp.xxxxxxx.cn") #配置smtp服務器
$client.Port = 587#指定smtp端口
$client.EnableSsl = $true #帶ssl功能的smtp服務器
$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)
{
#密碼最后一次更改時間
$pwdlastset=Get-ADUser $user -Properties * | %{$_.passwordlastset}
#密碼的過期時間
$pwdlastday=$pwdlastset.AddDays(90)
#當前時間
$now=get-date
#判斷賬戶是否設置了永不過期
$neverexpire=get-aduser $user -Properties * |%{$_.PasswordNeverExpires}
#距離密碼過期的時間
$expire_days=($pwdlastday - $now).Days
#判斷過期時間天小于5天大于-5天(即已過期5天)的并且沒有設置密碼永不過期的賬戶
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 天后過期,請您盡快更改。
更改密碼請遵循以下原則:
○密碼長度最少 8 位;
○密碼可使用最長時間 90天,過期需要更改密碼;
○密碼最短使用 1天( 1 天之內不能再次修改密碼);
○強制密碼歷史 3個(不能使用之前最近使用的 3 個密碼);
○密碼符合復雜性需求(大寫字母、小寫字母、數字和符號四種中必須有三種、且密碼口令中不得包括全部或部分用戶名)
"
$tomailaddr = $user + "@xxxx.com"
#echo $tomailaddr
sendmail $tomailaddr $Emailbody
}
}
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。