Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- # © 2012 Chris Stone <chris[at]stoneyforest.net> Simplified BSD License
- Import-Module ActiveDirectory
- $emailserver = "##### SET YOUR MailServer.Domain.Com Here #####"
- $adminemail = "##### SET YOUR ADMINISTRATOR's EMAIL ADDRESS HERE #####"
- $daystobug = 9
- $emailFrom = "PasswordBot." + gc env:computername + "@" + (gwmi Win32_NTDomain).DnsForestName
- $smtp = new-object Net.Mail.SmtpClient($emailserver)
- $maxdays=(Get-ADDefaultDomainPasswordPolicy).MaxPasswordAge.TotalDays
- $summarybody="Name `t ExpireDate `t DaysToExpire `n"
- (Get-ADUser -filter {(Enabled -eq "True") -and (PasswordNeverExpires -eq "False")} -properties *) | Sort-Object pwdLastSet | foreach-object {
- $lastset=Get-Date([System.DateTime]::FromFileTimeUtc($_.pwdLastSet))
- $expires=$lastset.AddDays($maxdays).ToShortDateString()
- $daystoexpire=[math]::round((New-TimeSpan -Start $(Get-Date) -End $expires).TotalDays)
- $samname=$_.samaccountname
- $firstname=$_.GivenName
- if (($daystoexpire -le $daystobug) -and ($daystoexpire -gt 0)) {
- $ThereAreExpiring=$true
- $subject = "$firstname, your password expires in $daystoexpire day(s)"
- $body = "$firstname,`n`nYour password expires in $daystoexpire day(s).`nPlease press Ctrl + Alt + Del -> Change password`n`nSincerely,`n`nPassword Robot"
- $smtp.Send($emailFrom, $_.EmailAddress, $subject, $body)
- $summarybody += "$samname `t $expires `t $daystoexpire `n"
- }
- }
- if ($ThereAreExpiring) {
- $emailTo = $adminemail
- $subject = "Expiring passwords"
- $body = $summarybody
- $smtp.Send($emailFrom, $emailTo, $subject, $body)
- }
Advertisement
Add Comment
Please, Sign In to add comment