AD账号密码过期邮件提醒-powershell实现--密码加密(新增)

加密部分参考:http://www.bubuko.com/infodetail-1846894.html


首先将在某台主机上上建立一个share folder,设置权限为Everyone读取,里面将存储加密后的密码文件,文件命名为Password.txt。

新建一个加密的powershell文件,内容如下:用于把密码加密存储至Password.txt

 

$File = "\\SHSV2018\SharePath\Password.txt"
[Byte[]] $key = (1..16)
$Password = "P@ssword" | ConvertTo-SecureString -AsPlainText -Force
$Password | ConvertFrom-SecureString -key $key | Out-File $File
然后我们就可以直接在所需要调用密码的地方读取Password.txt,具体参见标红的部分


#leader的需求是,AD密码过期15天之前通过邮件通知用户,告知还有多少天密码就要过期了

#由于不是特别熟悉powershell,所以会写的比较笨,不过功能是实现了

#我们设置的是用户密码90天就过期

$File = "\\SHSV2018\SharePath\Password.txt"
[Byte[]] $key = (1..16)
$smtpPassword=Get-Content $File | ConvertTo-SecureString -Key $key
$user=Get-ADUser -searchbase 'OU=XX,DC=XX,DC=XX,DC=XX' -Filter * -Properties * |Select-Object displayname,passwordlastset,mail #这边的ou和DC填自己的,获取域账户所需的信息
$today=Get-Date #获取今天的日期
$today_75=$today.AddDays(-75) #获取75天的日期
$today_90=$today.AddDays(-90) #获取90天的日期
$Mailtouser=$user |Where-Object {$_.passwordlastset -le $today_75 -and $_.passwordlastset -ge $today_90 -and $_.passwordlastset -gt 0 -and $_.displayname -ne 'user1' -and $_.displayname -ne 'user2'} #获取需要邮件通知的用户,通过过期时间排除,其中也排除了user1和user2这样的特殊用户
$Mailusernum=$Mailtouser.Count #这样账户的总数
$MailtoAddress=$Mailtouser.mail #这些账户的mail邮箱
$Mailtouser_ed=$user |Where-Object {$_.passwordlastset -lt $today_90  -and $_.passwordlastset -gt 0 -and $_.displayname -ne 'user1' -and $_.displayname -ne 'user2'} #这是获取已经过期了的账户,其中也排除了user1和user2这样的特殊用户
$Mailusernum_ed=$Mailtouser_ed.Count #这样账户的总数
$MailtoAddress_ed=$Mailtouser_ed.mail #这些账户的mail邮箱
$smtpServer="smtp.exmail.qq.com" #你的smtp服务器,楼主的是qq
$smtpUser="xxx@qq.com" #账户
#$smtpPassword="password"#密码 注释掉 
$mail=New-Object System.Net.Mail.MailMessage
$MailAddress="xxx@qq.com" #发件人地址
$mail.From=New-Object System.Net.Mail.MailAddress($MailAddress)
$mail.Subject="主题"
$smtp=New-Object System.Net.Mail.SmtpClient -ArgumentList $smtpServer
$smtp.Credentials=New-Object System.Net.NetworkCredential -ArgumentList $smtpUser,$smtpPassword
for ($i=0;$i -lt $Mailusernum;$i++) #循环并发送邮件----还有多少天过期
{
$mail.To.Add($MailtoAddress[$i])
$days_array=((New-TimeSpan $Mailtouser.passwordlastset[$i] -end $today_75).Days) #获取还有多少天过期
$mail.Body="你的密码还有$days_array 天过期了"
$smtp.Send($mail) #发送邮件
$mail.To.Clear()

}


for ($i=0;$i -lt $Mailusernum_ed;$i++) #循环并发送邮件----已经过期多少天了
{
$mail.To.Add($MailtoAddress_ed[$i])
$days_array=((New-TimeSpan $Mailtouser_ed.passwordlastset[$i] -end $today_90).Days)#获取你过期多少天了
$mail.Body="你的密码已经过期 $days_array 天了"
$smtp.Send($mail)
$mail.To.Clear()
}

评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值