博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Powershell检测AD账户密码过期时间并邮件通知
阅读量:6717 次
发布时间:2019-06-25

本文共 2711 字,大约阅读时间需要 9 分钟。

脚本主要实现了两个功能 :

一能判断账户密码的过期时间并通过邮件通知到账户;

二是将这些即将过期的账户信息累计通知到管理员。

脚本如下:

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
############################################
#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)

实现的结果:

用户接收到的邮件:

管理员接收到的邮件:

本文出自 “” 博客,请务必保留此出处

本文转自 lorysun 51CTO博客,原文链接:http://blog.51cto.com/lorysun/1611061

转载地址:http://jhumo.baihongyu.com/

你可能感兴趣的文章
大数据+区块链将大有可为
查看>>
三大研究机构预测:6家公司吃掉80%云计算市场
查看>>
智能家居“吸金”新方式 家电或成救世主
查看>>
浙江电力使用RFID技术,有力保障电网运营
查看>>
呼叫中心管理之:让座席看见自己
查看>>
运营商全渠道建设的终极形态
查看>>
Java核心类库:内部类那点事儿
查看>>
《SAP入门经典(第5版)》——2.5 小结
查看>>
《软件建模与设计: UML、用例、模式和软件体系结构》一一1.8 软件建模和设计方法的发展...
查看>>
web 应用通用数据访问层 Fetchr
查看>>
《vSphere性能设计:性能密集场景下CPU、内存、存储及网络的最佳设计实践》一1.2 建立基准...
查看>>
绕过 Windows 10 Cloud 限制 成功运行 Win32 应用程序
查看>>
Alamofire —— Swift 的 HTTP 客户端开发包
查看>>
《程序员的呐喊》一一1.13 弱类型机制够不够强
查看>>
Windows 10 Redstone 终将引入交互式动态瓷贴
查看>>
《机器人与数字人:基于MATLAB的建模与控制》——3.1节平移和旋转
查看>>
《途客圈创业记:不疯魔,不成活》一一1.3 iWeekend创业周末
查看>>
《精通SNMP》——2.4 标签类型和子类型
查看>>
《云数据中心构建实战:核心技术、运维管理、安全与高可用》——导读
查看>>
《Python自动化运维:技术与最佳实践》一2.4 探测Web服务质量方法
查看>>