mirror of
https://github.com/admindroid-community/powershell-scripts.git
synced 2025-12-17 16:35:19 +00:00
Export SSPR Status Report
Export SSPR Status Report
This commit is contained in:
parent
34ec227b92
commit
5ade828b6a
177
Get SSPR Status Report/GetSSPRstatusReport.ps1
Normal file
177
Get SSPR Status Report/GetSSPRstatusReport.ps1
Normal file
@ -0,0 +1,177 @@
|
||||
<#
|
||||
=============================================================================================
|
||||
Name: Export Microsoft 365 Users' SSPR Status Reports
|
||||
|
||||
|
||||
Script Highlights:
|
||||
~~~~~~~~~~~~~~~~~
|
||||
1. The script exports 10 SSPR status reports.
|
||||
2. Exports SSPR status for Microsoft 365 users.
|
||||
3. Generates report on SSPR enabled users.
|
||||
4. Finds SSPR disabled users.
|
||||
5. Identifies users who are eligible but not registered for SSPR.
|
||||
6. Finds SSPR status for Microsoft 365 admins.
|
||||
7. Determines the SSPR status specifically for licensed users.
|
||||
8. The script can be executed with MFA-enabled accounts.
|
||||
9. It exports results to a CSV file for convenient data handling.
|
||||
10. The script installs the required Microsoft Graph Beta module upon user confirmation if not already installed.
|
||||
11. Supports certificate-based authentication (scheduler-friendly) method.
|
||||
|
||||
============================================================================================
|
||||
#>
|
||||
Param
|
||||
(
|
||||
|
||||
[switch]$AdminsOnly,
|
||||
[switch]$LicensedUsersOnly,
|
||||
[switch]$SsprTurnedOnButUserNotRegistered,
|
||||
[Switch]$SsprEnabledUsers,
|
||||
[Switch]$SsprDisabledUsers,
|
||||
[switch]$CreateSession,
|
||||
[string]$TenantId,
|
||||
[string]$ClientId,
|
||||
[string]$CertificateThumbprint
|
||||
)
|
||||
|
||||
|
||||
|
||||
Function Connect_MgGraph
|
||||
{
|
||||
$MsGraphBetaModule = Get-Module Microsoft.Graph.Beta -ListAvailable
|
||||
if($MsGraphBetaModule -eq $null)
|
||||
{
|
||||
Write-host "Important: Microsoft Graph Beta module is unavailable. It is mandatory to have this module installed in the system to run the script successfully."
|
||||
$confirm = Read-Host Are you sure you want to install Microsoft Graph Beta module? [Y] Yes [N] No
|
||||
if($confirm -match "[yY]")
|
||||
{
|
||||
Write-host "Installing Microsoft Graph Beta module..."
|
||||
Install-Module Microsoft.Graph.Beta -Scope CurrentUser -AllowClobber
|
||||
Write-host "Microsoft Graph Beta module is installed in the machine successfully" -ForegroundColor Magenta
|
||||
#importing required modules
|
||||
Import-Module Microsoft.Graph.Authentication
|
||||
Import-Module Microsoft.Graph.Beta.Report
|
||||
|
||||
}
|
||||
else
|
||||
{
|
||||
Write-host "Exiting. `nNote: Microsoft Graph Beta module must be available in your system to run the script" -ForegroundColor Red
|
||||
Exit
|
||||
}
|
||||
}
|
||||
#Disconnect Existing MgGraph session
|
||||
if($CreateSession.IsPresent)
|
||||
{
|
||||
Disconnect-MgGraph
|
||||
}
|
||||
#Connecting to MgGraph beta
|
||||
Write-Host Connecting to Microsoft Graph...
|
||||
if(($TenantId -ne "") -and ($ClientId -ne "") -and ($CertificateThumbprint -ne ""))
|
||||
{
|
||||
Connect-MgGraph -TenantId $TenantId -AppId $ClientId -CertificateThumbprint $CertificateThumbprint
|
||||
}
|
||||
else
|
||||
{
|
||||
Connect-MgGraph -Scopes "User.Read.All","AuditLog.read.All" -NoWelcome
|
||||
}
|
||||
}
|
||||
Connect_MgGraph
|
||||
|
||||
$Location=Get-Location
|
||||
$ExportCSV="$Location\SSPR_Status_Report_$((Get-Date -format yyyy-MMM-dd-ddd` hh-mm` tt).ToString()).csv"
|
||||
$Result=""
|
||||
$Results=@()
|
||||
$OutputCount=0
|
||||
$ProcessedUsersCount=0
|
||||
Write-Host "Generating M365 users' SSPR status report..." -ForegroundColor Cyan
|
||||
Get-MgBetaReportAuthenticationMethodUserRegistrationDetail | ? { $_.UserType -eq 'member' } | foreach {
|
||||
$UPN=$_.UserPrincipalName
|
||||
$DisplayName=$_.UserDisplayName
|
||||
$IsAdmin=$_.IsAdmin
|
||||
$IsSsprEnabled=$_.IsSsprEnabled
|
||||
$IsSsprRegistered=$_.IsSsprRegistered
|
||||
$IsSsprCapable=$_.IsSsprCapable
|
||||
$RegisteredMethods=$_.MethodsRegistered
|
||||
$RegisteredMethods=$RegisteredMethods -join ","
|
||||
$UserPreferredAuthMethod=$_.UserPreferredMethodForSecondaryAuthentication
|
||||
$Print=1
|
||||
$ProcessedUsersCount++
|
||||
Write-Progress -Activity "`n Processed user count: $ProcessedUsersCount "`n" Currently Processing: $DisplayName"
|
||||
$UserDetails=Get-MgBetaUser -UserId $UPN
|
||||
if($UserDetails.AssignedLicenses -ne "")
|
||||
{
|
||||
$IsLicensed="Licensed"
|
||||
}
|
||||
else
|
||||
{
|
||||
$IsLicensed="Unlicensed"
|
||||
}
|
||||
$SignInEnabled=$UserDetails.AccountEnabled
|
||||
$Department=$UserDetails.Department
|
||||
$JobTitle=$UserDetails.JobTitle
|
||||
if($LicensedUsersOnly.IsPresent -and ($IsLicensed -ne "Licensed"))
|
||||
{
|
||||
$Print=0
|
||||
}
|
||||
if($AdminsOnly.IsPresent -and ($IsAdmin -ne $true))
|
||||
{
|
||||
$Print=0
|
||||
}
|
||||
if($SsprEnabledUsers.IsPresent -and ($IsSsprCapable -ne $true))
|
||||
{
|
||||
$Print=0
|
||||
}
|
||||
if($SsprDisabledUsers.IsPresent -and ($IsSsprCapable -ne $false))
|
||||
{
|
||||
$Print=0
|
||||
}
|
||||
if($SsprTurnedOnButUserNotRegistered.IsPresent -and ($IsSsprEnabled -eq $IsSsprRegistered))
|
||||
{
|
||||
$Print=0
|
||||
}
|
||||
#Export result to csv
|
||||
if($Print -eq 1)
|
||||
{
|
||||
$OutputCount++
|
||||
$Result=@{'User Name'=$DisplayName;'UPN'=$upn;'Is SSPR Registered by User'=$IsSsprRegistered;'Is SSPR Enabled by Admins'=$IsSsprEnabled;'Department'=$Department;'Job Title'=$JobTitle;'License Status'=$IsLicensed;'Signin Enabled'=$SignInEnabled;'Is Admin'=$IsAdmin;'Registered Auth Methods'=$RegisteredMethods;'Default Auth Method'=$UserPreferredAuthMethod}
|
||||
$Results= New-Object PSObject -Property $Result
|
||||
$Results | Select-Object 'User Name','UPN','Is SSPR Registered by User','Is SSPR Enabled by Admins','Department','Registered Auth Methods','Default Auth Method','Job Title','License Status','Signin Enabled','Is Admin'| Export-Csv -Path $ExportCSV -Notype -Append
|
||||
}
|
||||
}
|
||||
|
||||
#Open output file after execution
|
||||
If($OutputCount -eq 0)
|
||||
{
|
||||
Write-Host No data found for the given criteria
|
||||
}
|
||||
else
|
||||
{
|
||||
Write-Host `nThe output file contains $OutputCount accounts.
|
||||
if((Test-Path -Path $ExportCSV) -eq "True")
|
||||
{
|
||||
|
||||
Write-Host `n The Output file available in: -NoNewline -ForegroundColor Yellow
|
||||
Write-Host $ExportCSV
|
||||
$Prompt = New-Object -ComObject wscript.shell
|
||||
$UserInput = $Prompt.popup("Do you want to open output file?",`
|
||||
0,"Open Output File",4)
|
||||
If ($UserInput -eq 6)
|
||||
{
|
||||
Invoke-Item "$ExportCSV"
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
Write-Host `n~~ Script prepared by AdminDroid Community ~~`n -ForegroundColor Green
|
||||
Write-Host "~~ Check out " -NoNewline -ForegroundColor Green; Write-Host "admindroid.com" -ForegroundColor Yellow -NoNewline; Write-Host " to get access to 1800+ Microsoft 365 reports. ~~" -ForegroundColor Green `n`n
|
||||
|
||||
|
||||
<#
|
||||
=============================================================================================
|
||||
Name: Export Microsoft 365 Users' Self-service Password Reset (SSPR) Status Reports
|
||||
Description: The script exports users' Self-service password reset status reports to CSV.
|
||||
Version: 1.0
|
||||
Website: o365reports.com
|
||||
|
||||
For detailed Script execution: https://o365reports.com/2024/02/13/export-microsoft-365-users-self-service-password-reset-sspr-status-reports
|
||||
============================================================================================
|
||||
#>
|
||||
Loading…
x
Reference in New Issue
Block a user