chrisstone

PowerShell Password Expiration Reminder Robot

Feb 19th, 2013
58
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. # © 2012 Chris Stone <chris[at]stoneyforest.net> Simplified BSD License
  2.  
  3. Import-Module ActiveDirectory
  4.  
  5. $emailserver = "##### SET YOUR MailServer.Domain.Com Here #####"
  6. $adminemail = "##### SET YOUR ADMINISTRATOR's EMAIL ADDRESS HERE #####"
  7. $daystobug = 9
  8.  
  9. $emailFrom = "PasswordBot." + gc env:computername + "@" + (gwmi Win32_NTDomain).DnsForestName
  10. $smtp = new-object Net.Mail.SmtpClient($emailserver)
  11.  
  12. $maxdays=(Get-ADDefaultDomainPasswordPolicy).MaxPasswordAge.TotalDays
  13. $summarybody="Name `t ExpireDate `t DaysToExpire `n"
  14.  
  15. (Get-ADUser -filter {(Enabled -eq "True") -and (PasswordNeverExpires -eq "False")} -properties *) | Sort-Object pwdLastSet | foreach-object {
  16.  
  17.     $lastset=Get-Date([System.DateTime]::FromFileTimeUtc($_.pwdLastSet))
  18.     $expires=$lastset.AddDays($maxdays).ToShortDateString()
  19.     $daystoexpire=[math]::round((New-TimeSpan -Start $(Get-Date) -End $expires).TotalDays)
  20.     $samname=$_.samaccountname
  21.     $firstname=$_.GivenName
  22.  
  23.     if (($daystoexpire -le $daystobug) -and ($daystoexpire -gt 0)) {
  24.         $ThereAreExpiring=$true
  25.  
  26.         $subject = "$firstname, your password expires in $daystoexpire day(s)"
  27.         $body = "$firstname,`n`nYour password expires in $daystoexpire day(s).`nPlease press Ctrl + Alt + Del -> Change password`n`nSincerely,`n`nPassword Robot"
  28.  
  29.         $smtp.Send($emailFrom, $_.EmailAddress, $subject, $body)
  30.  
  31.         $summarybody += "$samname `t $expires `t $daystoexpire `n"
  32.     }
  33. }
  34.  
  35. if ($ThereAreExpiring) {
  36.     $emailTo = $adminemail
  37.     $subject = "Expiring passwords"
  38.     $body = $summarybody
  39.    
  40.     $smtp.Send($emailFrom, $emailTo, $subject, $body)
  41. }
Advertisement
Add Comment
Please, Sign In to add comment