我記得在壇子裡流傳這一份用PS1.0版本實作此功能的腳本本來想直接使用,但居然發現不會用呵呵。
後來一想直接寫一個得了,此腳本主要實作了兩個功能 :
一能判斷賬戶密碼的過期時間并通過郵件通知到賬戶,二是将這些即将過期的賬戶資訊累計通知到管理者。
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
<code>############################################</code>
<code>#Author:Lixiaosong</code>
<code>#Email:[email protected];[email protected]</code>
<code>#For:檢測AD密碼過期時間并郵件通知</code>
<code>#Version:1.0</code>
<code>##############################################</code>
<code>Import-Module</code> <code>Activedirectory</code>
<code>$alladuser</code><code>=</code><code>get-aduser</code> <code>-searchbase</code> <code>"OU=IT,DC=contoso,DC=com"</code> <code>-filter</code> <code>* | %{</code><code>$_</code><code>.Samaccountname}</code>
<code>$userlist</code> <code>= @()</code>
<code>#################################################</code>
<code>#檢測AD密碼過期時間并郵件通知相應賬戶</code>
<code>##################################################</code>
<code>foreach</code> <code>(</code><code>$user</code> <code>in</code> <code>$alladuser</code><code>){</code>
<code>#密碼最後一次更改時間</code>
<code>$pwdlastset</code><code>=</code><code>Get-ADUser</code> <code>$user</code> <code>-Properties</code> <code>* | %{</code><code>$_</code><code>.passwordlastset}</code>
<code>#密碼的過期時間</code>
<code>$pwdlastday</code><code>=(</code><code>$pwdlastset</code><code>).adddays(90)</code>
<code>#目前時間</code>
<code>$now</code><code>=</code><code>get-date</code>
<code>#判斷賬戶是否設定了永不過期</code>
<code>$neverexpire</code><code>=</code><code>get-aduser</code> <code>$user</code> <code>-Properties</code> <code>* |%{</code><code>$_</code><code>.PasswordNeverExpires}</code>
<code>#距離密碼過期的時間</code>
<code>$expire_days</code><code>=(</code><code>$pwdlastday</code> <code>- </code><code>$now</code><code>).Days</code>
<code>#判斷過期時間天小于15天的并且沒有設定密碼永不過期的賬戶</code>
<code>if</code><code>(</code><code>$expire_days</code> <code>-lt</code> <code>15 </code><code>-and</code> <code>$neverexpire</code> <code>-like</code> <code>"false"</code> <code>){</code>
<code> </code><code>$chineseusername</code><code>= </code><code>Get-ADUser</code> <code>$user</code> <code>-Properties</code> <code>* | %{</code><code>$_</code><code>.Displayname}</code>
<code> </code><code>#郵件正文</code>
<code> </code><code>$Emailbody</code><code>=</code>
<code>"親愛的 $chineseusername 同學 :</code>
<code> </code><code>您的域賬戶和郵箱密碼即将在 $expire_days 天後過期, $pwdlastday 之後您将無法登陸計算機和收發郵件,請您盡快更改。</code>
<code> </code><code>重置密碼過程請遵循以下原則:</code>
<code> </code><code>○密碼長度最少 8 位;</code>
<code> </code><code>○密碼可使用最長時間 90天,過期需要更改密碼;</code>
<code> </code><code>○密碼最短使用 1天( 1 天之内不能再次修改密碼);</code>
<code> </code><code>○強制密碼曆史 3個(不能使用之前最近使用的 3 個密碼);</code>
<code> </code><code>○密碼符合複雜性需求(大寫字母、小寫字母、數字和符号四種中必須有三種、且密碼密碼中不得包括全部或部分使用者名)</code>
<code>"</code>
<code>Send-MailMessage</code> <code>-from</code> <code>"[email protected]"</code> <code>-to</code> <code>"[email protected]"</code> <code>-subject</code> <code>"您的賬戶密碼即将過期"</code> <code>-body</code> <code>$Emailbody</code> <code>-Attachments</code> <code>D:\script\如何更改域使用者密碼.pptx</code> <code>-smtpserver</code> <code>mail.contoso.com</code> <code>-Encoding</code> <code>(</code><code>[System.Text.Encoding]</code><code>::UTF8)</code>
<code>#############################################</code>
<code>#查找賬戶的密碼過期時間并發送至管理者賬戶</code>
<code>$username</code><code>=</code><code>Get-ADUser</code> <code>$user</code> <code>-Properties</code> <code>*</code>
<code>$userobject</code><code>=</code><code>New-object</code> <code>psobject</code>
<code>$userobject</code> <code>| </code><code>Add-Member</code> <code>-membertype</code> <code>noteproperty</code> <code>-Name</code> <code>使用者名</code> <code>-value</code> <code>$username</code><code>.displayname</code>
<code>$userobject</code> <code>| </code><code>Add-Member</code> <code>-membertype</code> <code>noteproperty</code> <code>-Name</code> <code>郵箱</code> <code>-Value</code> <code>$username</code><code>.mail</code>
<code>$userobject</code> <code>| </code><code>Add-Member</code> <code>-membertype</code> <code>noteproperty</code> <code>-Name</code> <code>最後一次密碼設定</code> <code>-Value</code> <code>$username</code><code>.Passwordlastset</code>
<code>$userobject</code> <code>| </code><code>Add-Member</code> <code>-membertype</code> <code>noteproperty</code> <code>-Name</code> <code>密碼過期時間</code> <code>-Value</code> <code>$pwdlastday</code>
<code>$userobject</code> <code>| </code><code>Add-Member</code> <code>-membertype</code> <code>noteproperty</code> <code>-Name</code> <code>距離密碼過期天數</code> <code>-Value</code> <code>$expire_days</code>
<code>$userlist</code><code>+=</code><code>$userobject</code>
<code>}</code>
<code>$EmailbodyHTML</code><code>=</code><code>$userlist</code><code>|</code>
<code>sort-object</code> <code>距離密碼過期天數 |</code>
<code>ConvertTo-Html</code> <code>|</code>
<code>Out-String</code>
<code>Send-Mailmessage</code> <code>-from</code> <code>"[email protected]"</code> <code>–to “itmanager</code><code>@contoso</code><code>”</code> <code>-Bodyashtml</code> <code>$EmailbodyHTML</code> <code>-Subject</code> <code>"管理者通知"</code> <code>-smtpserver</code> <code>mail.contoso.com</code> <code>-Encoding</code> <code>(</code><code>[System.Text.Encoding]</code><code>::UTF8)</code>
實作的結果:
<a href="http://lixiaosong.blog.51cto.com/attachment/201405/9/705126_1399676907IbGM.png" target="_blank"></a>
<a href="http://lixiaosong.blog.51cto.com/attachment/201405/9/705126_1399676908N3UN.png" target="_blank"></a>
本文轉自handsome7038 51CTO部落格,原文連結:http://blog.51cto.com/lixiaosong/1409113