Sometimes you just need to get a list of all your users and the last time they set their passwords. This is a pretty quick and dirty way to do it.


$reportObject = @()
$userList = Get-ADUser -filter {Enabled -eq $True -and PasswordNeverExpires -eq  $False} -Properties "DisplayName", "LastLogonTimeStamp", "LastLogonDate", "PasswordLastSet", "msDS-UserPasswordExpiryTimeComputed" |  Where-Object {$_.DisplayName -ne $null}
$userList | %{

    $output = "" | Select DisplayName, passwordlastset, ExpiryDate, LastLogonDate
    $output.DisplayName = $_.DisplayName
    $output.passwordlastset = $_.passwordlastset
    $output.ExpiryDate = ([datetime]::FromFileTime($_."msDS-UserPasswordExpiryTimeComputed")).DateTime
    $output.LastLogonDate = $_.LastLogonDate
    $reportObject += $output
    $output | fl *
    ([datetime]::FromFileTime($_."msDS-UserPasswordExpiryTimeComputed")).DateTime 
}

$reportObject | Convertto-CSV -NoTypeInformation
$reportObject | export-csv -Path c:\temp\UserPasswordAgeInfo.csv -NoTypeInformation