Exportera rapport för medlemmar av Microsoft 365 Admin roller

Administratörer läggs till i olika administratörsrollgrupper i många organisationer. För det mesta är det mycket privilegierade roller. De behöver dock inte så många åtkomsträttigheter. Det är bäst att skapa en rapport om administratörsroller och se vilken medlem som läggs till i vilken administratörsroll. I den här artikeln kommer du att lära dig hur du exporterar Microsoft 365 admin roller som medlemmar rapporterar med PowerShell och Microsoft 365 admin center.

Exportera administratörsrollmedlemmar i Microsoft 365 admin center

För att exportera administratörsrollmedlemmarna i Microsoft 365, följ stegen nedan:

  1. Logga in påMicrosoft 365 administratörscenter
  2. Klicka påRoller > Rolltilldelningar
  3. VäljaMicrosoft inloggnings-ID
  4. Klicka påExportera administratörslista
  1. Öppna CSV-filen för Microsoft Entra ID/Microsoft 365 admin rollrapport

Nackdelen med denna rapport är att den inte visar användarna i grupperna. Så det är då PowerShell kommer till undsättning. Låt oss titta på det.

Exportera administratörsrollmedlemmar med PowerShell-skript

Export-M365AdminRoles.ps1 PowerShell-skriptet kommer att få alla användare med administratörsroller i Microsoft 365/Entra-hyresgästen. Efter det kommer den att exportera rapporten till CSV-fil. Du kan öppna CSV-filen med Microsoft Excel eller något annat program som stöder CSV-filtillägget.

Skriptet kommer att samla in följande information:

  1. Roll
  2. Visningsnamn
  3. UserPrincipalName
  4. MemberType
  5. LastSuccessfulSignInDateTime (kräver en Microsoft Entra ID P1/P2-licens)
  6. Kontostatus
  7. Licensstatus

För att exportera alla administratörsrollmedlemmar med PowerShell, följ stegen nedan:

Steg 1. Installera Microsoft Graph PowerShell

Kör Windows PowerShell som administratör och installera Microsoft Graph PowerShell-modulen.

Install-Module Microsoft.Graph -Force

Viktig:Uppdatera alltid till den senaste versionen av Microsoft Graph PowerShell-modulen innan du kör en cmdlet eller ett skript för att förhindra fel och felaktiga resultat.

Steg 2. Ladda ner Export-M365AdminRoles PowerShell-skript

Skapa två mappar på(C:)köra:

  • Manus
  • Temp

Ladda ner och placera Export-M365AdminRoles.ps1 PowerShell-skriptet iC: Manusmapp. Skriptet kommer att exportera alla användare med administratörsroller till en rapport iC:Tempmapp.

Se till att filen är avblockerad för att förhindra fel när du kör skriptet. Läs mer i artikeln Inte digitalt signerat fel vid körning av PowerShell-skript.

Ett annat alternativ är att kopiera och klistra in koden nedan i Anteckningar. Ge den namnet Export-M365AdminRoles.ps1 och placera den iC: Manusmapp.

<#
    .SYNOPSIS
    Export-M365AdminRoles.ps1

    .DESCRIPTION
    Export all Microsoft 365/Microsoft Entra ID admin roles members to CSV file.

    .LINK
    www.alitajran.com/export-microsoft-365-admin-roles-members/

    .NOTES
    Written by: ALI TAJRAN
    Website:    www.alitajran.com
    LinkedIn:   linkedin.com/in/alitajran
    X:          x.com/alitajran

    .CHANGELOG
    V2.00, 02/10/2025 - Refactored the script for faster performance.
#>

param (
    [Parameter(Mandatory = $true)]
    [string]$ExportPath
)

# Connect to Microsoft Graph with necessary scopes
Connect-MgGraph -Scopes "RoleManagement.Read.Directory", "User.Read.All", "Group.Read.All", "AuditLog.Read.All", "Organization.Read.All" -NoWelcome

# Define CSV file export location variable using the parameter provided
$Csvfile = "$ExportPath"

# Retrieve all subscribed SKUs and check for Entra ID Premium
$hasPremium = $false
$hasPremium = (Get-MgSubscribedSku).ServicePlans.ServicePlanName -contains "AAD_PREMIUM"

# Display status of Premium subscription
if ($hasPremium) {
    Write-Host "Microsoft Entra ID Premium subscription available." -ForegroundColor Cyan
}
else {
    Write-Host "Microsoft Entra ID Premium subscription unavailable." -ForegroundColor Cyan
}

# If Premium is available, include the sign-in activity for the user
$propertyParams = if ($hasPremium) {
    @('AccountEnabled', 'AssignedLicenses', 'SignInActivity')
}
else {
    @('AccountEnabled', 'AssignedLicenses')
}

# Initialize a List to store the data
$Report = [System.Collections.Generic.List[Object]]::new()

# Get all directory roles
$allroles = Get-MgDirectoryRole | Select-Object Id, DisplayName

# Initialize a counter for progress bar
$totalRoles = $allroles.Count
$counter = 0

# Loop through each user to check for role memberships with progress bar
foreach ($role in $allroles) {
    $counter++
    $percentComplete = [math]::Round(($counter / $totalRoles) * 100, 2)
    Write-Progress -Activity "Processing Roles - $percentComplete%" -Status "Role: $($role.DisplayName)" -PercentComplete $percentComplete

    # Get members of each role
    $Rolemembers = Get-MgDirectoryRoleMember -DirectoryRoleId $role.id
    if ($null -ne $Rolemembers) {
        foreach ($Member in $rolemembers) {
            $odataType = $member.AdditionalProperties.'@odata.type'
            switch -regex ($odataType) {
                'user$' {
                    # Get user information including potential sign-in activity
                    $userInfo = Get-MgUser -UserId $member.id -Property $propertyParams | Select-Object $propertyParams
                    $lastSignIn = if ($hasPremium) {
                        if ($userInfo.SignInActivity -and $userInfo.SignInActivity.LastSuccessfulSignInDateTime) {
                            $userInfo.SignInActivity.LastSuccessfulSignInDateTime
                        }
                        else {
                            "Never Signed In"
                        }
                    }
                    else {
                        "Microsoft Entra ID Premium license unavailable"
                    }
                    $memberType = "User"
                    $username = $member.AdditionalProperties.userPrincipalName
                    $accountStatus = if ($userInfo.AccountEnabled) { "Enabled" } else { "Disabled" }
                    $licenseStatus = if ($userInfo.AssignedLicenses) { "Licensed" } else { "Unlicensed" }
                }
                'group$' {
                    $lastSignIn = "N/A"
                    $memberType = "Group"
                    $username = "N/A"
                    $accountStatus = "N/A"
                    $licenseStatus = "N/A"
                }
                default {
                    $lastSignIn = "N/A"
                    $memberType = $odataType.Split('#')[1]
                    $username = "N/A"
                    $accountStatus = "N/A"
                    $licenseStatus = "N/A"
                }
            }

            # Create custom object for report
            $ReportLine = [PSCustomObject][Ordered]@{
                Role                         = $role.DisplayName
                DisplayName                  = $member.AdditionalProperties.displayName
                UserPrincipalName            = $username
                MemberType                   = $memberType
                LastSuccessfulSignInDateTime = $lastSignIn
                AccountStatus                = $accountStatus
                LicenseStatus                = $licenseStatus
            }
            $Report.Add($ReportLine)
        }
    }
}

# Finish the progress bar
Write-Progress -Activity "Processing Roles" -Status "Completed" -PercentComplete 100 -Completed

# Show report in Out-GridView and export report to CSV file
if ($Report.Count -gt 0) {
    $Report | Out-GridView -Title "Microsoft 365 Role Membership Report"
    $Report | Export-Csv -Path $Csvfile -NoTypeInformation -Encoding Utf8
    Write-Host "Report saved at $Csvfile" -ForegroundColor Cyan
}
else {
    Write-Host "No roles were found for any users." -ForegroundColor Yellow
}

Steg 3. Kör Export-M365AdminRoles PowerShell-skript

Kör kommandot nedan för att köraExport-M365AdminRoles.ps1PowerShell-skript och för att skapa en rapport.

C:scripts.Export-M365AdminRoles.ps1 -ExportPath "C:tempAdminRolesReport.csv"

Rapportutdata skickas till en interaktiv tabell i ett separat fönster (Out-GridView).

Steg 4. Kontrollera CSV-filen för administratörsrollrapporten

Export-M365AdminRoles.ps1 PowerShell-skriptet exporterar alla användare med administratörsroller till en CSV-fil.

Hitta filenAdminRolesReport.csvi stigenC:temp.

Rekommenderad läsning:Exportera OneDrive-användningsrapport i Microsoft 365

Öppna CSV-filen med din favoritapplikation. I vårt exempel är det Microsoft Excel.

Det är det!

Slutsats

Du lärde dig hur du exporterar Microsoft 365-rapporten om administratörsroller. Även om det är möjligt att exportera alla administratörsrollmedlemmar från Microsoft 365 admin center, är det bättre att använda PowerShell för en rapport. Det beror på att du kommer att se alla användare och inte några grupper som medlemmar. Du kan också lägga till alla typer av egenskaper du gillar till export-CSV-filen, vilket är perfekt för en rapport.

Gillade du den här artikeln? Du kanske också gillar How to Configure Microsoft Entra Privileged Identity Management (PIM). Glöm inte att följa oss och dela den här artikeln.

Related Posts