Exportujte sestavu členů rolí správce Microsoft 365

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:

  1. Přihlaste se doCentrum pro správu Microsoft 365
  2. Klikněte naRole > Přiřazení rolí
  3. VybratID Microsoft Entra
  4. Klikněte naExport seznamu správců
  1. 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:

  1. Role
  2. DisplayName
  3. UserPrincipalName
  4. MemberType
  5. LastSuccessfulSignInDateTime (vyžaduje licenci Microsoft Entra ID P1/P2)
  6. Stav účtu
  7. 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 -Force

Dů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.

Related Posts