Today I wanted to have a look if I could find all my external users in Office 365. And I’m especially interested in the active users.
First I had to connect to the Microsoft Online Service
Connect-MSolService
Then I’m collecting all users
$users = Get-MsolUser
foreach ($user in $users){
Write-Host $user.UserPrincipalName $user.UserType
}
Ok, So No I’m getting either Guest or Member.

The Guests are all my external users.
The complete script:
Connect-MSolService
$users = Get-MsolUser
foreach ($user in $users){
if ($user.UserType -eq “Guest”)
{
Write-Host $user.UserPrincipalName
}
}
Ok now the second part. How do I find my active users.
The closest I can get is: $user.LastPasswordChangeTimestamp
Ok, so now I know when someone’s password was last changed.
Now you just need to make sure that I force users to change their passwords on a regular basis. So that when their passwords haven’t changed the above will roughly give me the active users.

Is your business still running on paper trails, sprawling Excel files, or ageing Access databases? There’s a better way — and I can show you exactly what it looks like.
I’m the Technical Director of Vantage 365, a Microsoft solutions consultancy working with clients across the UK, the Netherlands, and worldwide.
For over 30 years I’ve been turning messy, manual business processes into clean, automated systems that save time, reduce errors, and give teams the visibility they need to make better decisions.
SharePains is not just any blog run by a Microsoft MVP. Have you ever used Try-Catch in Power Automate? The original post about Try-Catch in Power Automate can still be found on this site, https://staging.sharepains.com/2018/02/07/try-catch-finally-in-power-automate-flow/
Or have you ever used the Pieter’s method to avoid variables and speed up your flows? https://staging.sharepains.com/2020/03/11/pieters-method-for-advanced-in-flows/
You can contact me using contact@staging.sharepains.com
Leave a Reply
You must be logged in to post a comment.