Short script that gets all the users in your Office 365 tenant, and finds the password age.
Creates a list with UPN and password age, then sort by oldest password.
Also finds the average password age for your tenant.
Connect-MsolService
#Creates a array to put data into.
$array=@()
#Gets all users in your tenant.
$users = Get-MsolUser
#Foreach loop to get UPN and Password age for each user.
foreach($user in $users) {
#Gets the date for when the password was changed and sets corect format.
$date = [DateTime]$user.LastPasswordChangeTimestamp
#Gets todays date.
$today = Get-Date
#Finds how many days since the password has been changed.
$lastpasswordchange = New-TimeSpan -Start $date -End $today
#Add data to array
$object = [PSCustomObject]@{
UPN = $user.UserPrincipalName
PasswordAge = $lastpasswordchange.Days
}
$array += $object
}
#Function to find avrage number
Function Average($array2)
{
$RunningTotal = 0;
foreach($i in $array2){
$RunningTotal += $i
}
return ([decimal]($RunningTotal) / [decimal]($array2.Length));
}
#Finds the avrage password age for your tenant.
$APassword = Average($array.passwordage)
#Rounds the avrage password age to a whole number.
$APassword2 = [math]::Round($APassword)
"Average password age is $Apassword2 days."
"List of password age per user:"
#Sorts list of UPN and PasswordAge starting with the oldest password.
$array | Sort-Object -descending PasswordAge