################################################# # Please Configure the following variables…. # expireindays1 = How many days maximum the password has to expire (e.g. 7 will be up to 7 days) $expireindays1 = 7 ################################################# #Get Users From AD who are enabled Import-Module ActiveDirectory $users = get-aduser -filter * -Properties enabled, passwordneverexpires, passwordexpired, emailaddress, passwordlastset |where {$_.Enabled -eq “True”} | where { $_.PasswordNeverExpires -eq $false } | where { $_.passwordexpired -eq $false } $ListOfNames = @() foreach ($user in $users) { $Name = (Get-ADUser $user | foreach { $_.Name}) $emailaddress = $user.emailaddress $passwordSetDate = (get-aduser $user -properties passwordlastset | foreach { $_.PasswordLastSet }) $PasswordPol = (Get-AduserResultantPasswordPolicy $user) # Check for Fine Grained Password if (($PasswordPol) -ne $null) { $maxPasswordAge = ($PasswordPol).MaxPasswordAge } else { $maxPasswordAge = (Get-ADDefaultDomainPasswordPolicy).MaxPasswordAge } $expireson = $passwordsetdate + $maxPasswordAge $today = (get-date) $daystoexpire = (New-TimeSpan -Start $today -End $Expireson).Days if ($daystoexpire -le $expireindays1) { $ListOfNames += $Name } } echo $listofnames