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. [email protected]() #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