52 lines
1.7 KiB
PowerShell
52 lines
1.7 KiB
PowerShell
# Import the Microsoft Graph module
|
|
Import-Module Microsoft.Graph
|
|
|
|
# Connect to Microsoft Graph
|
|
Connect-MgGraph -Scopes "User.Read.All", "UserAuthenticationMethod.Read.All"
|
|
|
|
# Get all users
|
|
$users = Get-MgUser -All -Property Id, UserPrincipalName, DisplayName, AccountEnabled
|
|
|
|
$totalUsers = $users.Count
|
|
$processCount = 0
|
|
|
|
# Initialize an array to store user information
|
|
$userInfo = @()
|
|
|
|
Write-Progress -Activity "Getting User Details" -Status "Starting" -PercentComplete 0
|
|
|
|
foreach ($user in $users) {
|
|
$processCount++
|
|
$percentComplete = (($processCount / $totalUsers) * 100)
|
|
Write-Progress -Activity "Getting User Details" -Status "Processing $processCount/$totalUsers - $($user.UserPrincipalName)" -PercentComplete $percentComplete
|
|
|
|
# Get MFA methods for the user
|
|
$mfaMethods = Get-MgUserAuthenticationMethod -UserId $user.Id
|
|
|
|
# Check if any MFA method is registered
|
|
$mfaRegistered = $mfaMethods.Count -gt 0
|
|
|
|
# Get user licenses
|
|
$licenses = Get-MgUserLicenseDetail -UserId $user.Id
|
|
|
|
# Create a custom object for each user
|
|
$userObject = [PSCustomObject]@{
|
|
UserPrincipalName = $user.UserPrincipalName
|
|
DisplayName = $user.DisplayName
|
|
AccountEnabled = $user.AccountEnabled
|
|
MFARegistered = $mfaRegistered
|
|
MFAMethods = ($mfaMethods.AdditionalProperties.'@odata.type' -join ', ').Replace('#microsoft.graph.', '')
|
|
Licenses = ($licenses.SkuPartNumber -join ', ')
|
|
}
|
|
|
|
# Add the user object to the array
|
|
$userInfo += $userObject
|
|
}
|
|
|
|
# Export the results to a CSV file
|
|
$userInfo | Export-Csv -Path "EntraIDUsersMFAReport.csv" -NoTypeInformation
|
|
|
|
# Disconnect from Microsoft Graph
|
|
Disconnect-MgGraph
|
|
|
|
Write-Host "Report generated: EntraIDUsersMFAReport.csv" |