Public/Get-MFAStatus.ps1

Function Get-MFAStatus {
    <#
    .DESCRIPTION
    Get Multifactor Authentication Status for Microsoft Online users
 
    .NOTES
    Requires the Exchange Online module be installed, imported, and Connected.
    #>


    #Check that the MSOnline and ImportExcel Module is loaded
    $Modulecheck = Get-Module msonline
    if ($Modulecheck) {
    }
    Else {
        try {
            Connect-MsolService
        }
        catch {
            Write-Warning "You must first install and import the MSOnline Module"
        }
    }

    #Get all accounts for filtering
    $MSOLUsers = Get-MsolUser -all | Where-Object { $_.IsLicensed -eq 'True' }

    #Process results into a PSCustom Object with relevant info
    ForEach ($User in $MSOLUsers) {

        #Get the UserPrinicipalname for precise object Filtering
        $UPN = $User.UserprincipalName

        #Filter Msol Users using their UPN object data
        $UserObject = get-msoluser -SearchString $UPN | Select-Object DisplayName, UserprincipalName, islicensed
        $UserObject2 = get-msoluser -SearchString $UPN | Select-Object -Expand StrongAuthenticationRequirements
        $UserObject3 = get-msoluser -SearchString $UPN | Select-Object -Expand StrongAuthenticationMethods | Where-Object { $_.IsDefault -eq "True" }

        <#Pull Administrator Statuses
        $ca = Get-MsolRole -RoleName "Company Administrator"
        $CompanyAdministrator = Get-MsolRoleMember -RoleObjectId $ca.objectid | Where-Object { $_.EmailAddress -eq "$upn" }
        if ($null -ne $CompanyAdministrator) {
            $CaResult = $True
        }
        else {
            $CaResult = $False
        }
 
        $Ba = Get-MsolRole -RoleName "Company Administrator"
        $BillingAdministrator = Get-MsolRoleMember -RoleObjectId $ba.objectid | Where-Object { $_.EmailAddress -eq "$upn" }
        if ($null -ne $BillingAdministrator) {
            $BiResult = $True
        }
        else {
            $BiResult = $False
        }#>



        #Output Custom Object Info
        [pscustomobject]@{
            DisplayName       = $UserObject.DisplayName
            UserprincipalName = $UserObject.UserprincipalName
            IsLicensed        = $UserObject.islicensed
            MFAState          = $UserObject2.State
            MFAMethodDefault  = $UserObject3.Methodtype
            #IsCompanyAdministrator = $CaResult
            #IsBillingAdministrator = $BiResult
        }
    }
}