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:
- Logga in påMicrosoft 365 administratörscenter
- Klicka påRoller > Rolltilldelningar
- VäljaMicrosoft inloggnings-ID
- Klicka påExportera administratörslista

- Ö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:
- Roll
- Visningsnamn
- UserPrincipalName
- MemberType
- LastSuccessfulSignInDateTime (kräver en Microsoft Entra ID P1/P2-licens)
- Kontostatus
- 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 -ForceViktig: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.













