V mnoha organizacích jsou administrátoři přidáváni do různých skupin rolí správce. Většinou se jedná o vysoce privilegované role. Nepotřebují však tolik přístupových práv. Nejlepší je vytvořit přehled rolí správce a zjistit, který člen je přidán ke které roli správce. V tomto článku se dozvíte, jak exportovat sestavu členů rolí správce Microsoft 365 pomocí PowerShellu a centra pro správu Microsoft 365.
Exportujte členy rolí správce v Centru pro správu Microsoft 365
Chcete-li exportovat členy rolí správce v Microsoft 365, postupujte takto:
- Přihlaste se doCentrum pro správu Microsoft 365
- Klikněte naRole > Přiřazení rolí
- VybratID Microsoft Entra
- Klikněte naExport seznamu správců

- Otevřete soubor CSV zprávy o roli správce Microsoft Entra ID/Microsoft 365

Nevýhodou tohoto přehledu je, že nezobrazuje uživatele ve skupinách. Takže v tu chvíli přichází na pomoc PowerShell. Podívejme se na to.
Exportujte členy rolí správce pomocí skriptu PowerShell
Skript PowerShell Export-M365AdminRoles.ps1 získá všechny uživatele s rolemi správce v tenantovi Microsoft 365/Entra. Poté exportuje zprávu do souboru CSV. Soubor CSV můžete otevřít pomocí aplikace Microsoft Excel nebo jakékoli jiné aplikace, která podporuje příponu souboru CSV.
Skript shromáždí následující informace:
- Role
- DisplayName
- UserPrincipalName
- MemberType
- LastSuccessfulSignInDateTime (vyžaduje licenci Microsoft Entra ID P1/P2)
- Stav účtu
- Stav licence
Chcete-li exportovat všechny členy administrátorských rolí pomocí PowerShellu, postupujte takto:
Krok 1. Nainstalujte Microsoft Graph PowerShell
Spusťte Windows PowerShell jako správce a nainstalujte modul Microsoft Graph PowerShell.
Install-Module Microsoft.Graph -ForceDůležité:Před spuštěním rutiny nebo skriptu vždy aktualizujte na nejnovější verzi modulu Microsoft Graph PowerShell, abyste předešli chybám a nesprávným výsledkům.
Krok 2. Stáhněte si skript PowerShell Export-M365AdminRoles
Vytvořte dvě složky na(C:)řídit:
- Skripty
- Temp
Stáhněte a umístěte skript PowerShell Export-M365AdminRoles.ps1 do souboruC: Skriptysložku. Skript exportuje všechny uživatele s rolemi správce do sestavy vC: Teplotasložku.
Ujistěte se, že je soubor odblokován, abyste předešli chybám při spouštění skriptu. Přečtěte si více v článku Chyba není digitálně podepsána při spouštění skriptu PowerShell.
Další možností je zkopírovat a vložit níže uvedený kód do poznámkového bloku. Dejte mu název Export-M365AdminRoles.ps1 a umístěte jej doC: Skriptysložku.
<#
.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
}Krok 3. Spusťte skript PowerShell Export-M365AdminRoles
Spusťte níže uvedený příkaz pro spuštěníExport-M365AdminRoles.ps1Skript PowerShell a vytvoření sestavy.
Další informace:Jak exportovat role PIM v Microsoft Entra ID
C:scripts.Export-M365AdminRoles.ps1 -ExportPath "C:tempAdminRolesReport.csv"Výstup sestavy je odeslán do interaktivní tabulky v samostatném okně (Out-GridView).

Krok 4. Zkontrolujte soubor CSV sestavy rolí správce
Skript PowerShell Export-M365AdminRoles.ps1 exportuje všechny uživatele s rolemi správce do souboru CSV.
Najděte souborAdminRolesReport.csvv cestěC:tepl.
Otevřete soubor CSV se svou oblíbenou aplikací. V našem příkladu je to Microsoft Excel.

To je vše!
Závěr
Naučili jste se exportovat sestavu členů rolí správce Microsoft 365. I když je možné exportovat všechny členy administrátorských rolí z centra pro správu Microsoft 365, pro sestavu je lepší použít PowerShell. Je to proto, že jako členy uvidíte všechny uživatele a ne žádné skupiny. Do exportovaného souboru CSV můžete také přidat všechny druhy vlastností, které se vám líbí, což je ideální pro sestavu.
Líbil se vám tento článek? Také se vám může líbit How to Configure Microsoft Entra Privileged Identity Management (PIM). Nezapomeňte nás sledovat a sdílet tento článek.













