You can use the Microsoft Graph Powershell module to download last sign in date / time for users from the Beta endpoint ( the signInActivity is currently not available in v1.0 ) and save the list to a .csv file. You must have the Microsoft Graph powershell module installed. This document will help you get started.
My powershell script:
# This script uses the Microsoft Graph Powershell Module: https://docs.microsoft.com/en-us/graph/powershell/get-started
# please ensure the module is installed.
$outFilePath = 'c:\temp\lastSignIns.csv'
$hasError = $false
Connect-MgGraph -scopes "Directory.Read.All", "AuditLog.Read.All"
Select-MgProfile -Name beta
try{
$users = Get-MgUser -All -Property "id, userPrincipalName, displayName, signInActivity" -ErrorAction Stop -ErrorVariable GraphError | Select-Object -Property id, userPrincipalName, displayName, @{Name='lastSignInDateTime';Expression={$_.signInActivity.lastSignInDateTime};}
Write-Host "Downloaded report to memory..."
} catch {
Write-Host "Error downloading report: $GraphError.Message"
$hasError = $true
}
if(!$hasError){
try{
Write-Host "Writing to .csv file..."
$users | Export-Csv -Path $outFilePath
Write-Host "Report saved at $outFilePath"
} catch {
Write-Host "Error saving .csv: $_.ErrorDetails.Message"
}
}
Disconnect-MgGraph
Thanks, useful.
This script has been extremely useful sign I found it last year. However recently I noticed that it is not grabbing the latest sign-ins for some of the users in my tenant (typically, it’s grabbing the sign-ins from over 60 days ago). Any thoughts as to why? Has something changed to cause this to occur?
This is most likely due to the backend service