Eksportuokite „Microsoft 365“ administratoriaus vaidmenų narių ataskaitą

Daugelyje organizacijų administratoriai pridedami prie skirtingų administratoriaus vaidmenų grupių. Dažniausiai tai yra aukštų privilegijų vaidmenys. Tačiau jiems nereikia tiek daug prieigos teisių. Geriausia sukurti administratoriaus vaidmenų ataskaitą ir pamatyti, kuris narys yra pridėtas prie kurio administratoriaus vaidmens. Šiame straipsnyje sužinosite, kaip eksportuoti „Microsoft 365“ administratoriaus vaidmenų narių ataskaitą naudojant „PowerShell“ ir „Microsoft 365“ administravimo centrą.

Eksportuokite administratoriaus vaidmenis į „Microsoft 365“ administravimo centrą

Norėdami eksportuoti administratoriaus vaidmenų narius „Microsoft 365“, atlikite toliau nurodytus veiksmus.

  1. Prisijunkite prieMicrosoft 365 administravimo centras
  2. SpustelėkiteVaidmenys > Vaidmenų priskyrimas
  3. Pasirinkite„Microsoft“ prisijungimo ID
  4. SpustelėkiteEksportuoti administratorių sąrašą
  1. Atidarykite „Microsoft Entra ID“ / „Microsoft 365“ administratoriaus vaidmens ataskaitos CSV failą

Šios ataskaitos trūkumas yra tas, kad joje nerodomi grupėse esantys vartotojai. Taigi tada „PowerShell“ ateina į pagalbą. Pažiūrėkime į tai.

Eksportuokite administratoriaus vaidmenų narius naudodami „PowerShell“ scenarijų

„Export-M365AdminRoles.ps1 PowerShell“ scenarijus gaus visus „Microsoft 365“ / „Entra“ nuomotojo administratoriaus vaidmenis turinčius vartotojus. Po to ataskaita bus eksportuota į CSV failą. CSV failą galite atidaryti naudodami „Microsoft Excel“ arba bet kurią kitą programą, kuri palaiko CSV failo plėtinį.

Scenarijus surinks šią informaciją:

  1. Vaidmuo
  2. DisplayName
  3. UserPrincipalName
  4. Narystės tipas
  5. LastSuccessfulSignInDateTime (reikia Microsoft Entra ID P1/P2 licencijos)
  6. Paskyros būsena
  7. Licencijos būsena

Norėdami eksportuoti visus administratoriaus vaidmenis naudodami PowerShell, atlikite toliau nurodytus veiksmus.

1 veiksmas. Įdiekite „Microsoft Graph PowerShell“.

Paleiskite „Windows PowerShell“ kaip administratorių ir įdiekite „Microsoft Graph PowerShell“ modulį.

Install-Module Microsoft.Graph -Force

Svarbu:Visada atnaujinkite į naujausią Microsoft Graph PowerShell modulio versiją prieš paleisdami cmdlet arba scenarijų, kad išvengtumėte klaidų ir neteisingų rezultatų.

2 veiksmas. Atsisiųskite Export-M365AdminRoles PowerShell scenarijų

Sukurkite du aplankus(C :)vairuoti:

  • Scenarijai
  • Temp

Atsisiųskite ir įdėkite Export-M365AdminRoles.ps1 PowerShell scenarijų įC: Scenarijaiaplanką. Scenarijus eksportuos visus administratoriaus vaidmenis turinčius vartotojus į ataskaitąC: Tempaplanką.

Įsitikinkite, kad failas atblokuotas, kad išvengtumėte klaidų vykdant scenarijų. Skaitykite daugiau straipsnyje Nepasirašyta skaitmeniniu būdu klaida, kai vykdomas PowerShell scenarijus.

Kita galimybė yra nukopijuoti ir įklijuoti toliau pateiktą kodą į Notepad. Suteikite jam pavadinimą Export-M365AdminRoles.ps1 ir įdėkite jį įC: Scenarijaiaplanką.

<#
    .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
}

3 veiksmas. Paleiskite Export-M365AdminRoles PowerShell scenarijų

Vykdykite toliau pateiktą komandą, kad paleistumėteEksportuoti-M365AdminRoles.ps1PowerShell scenarijų ir sukurti ataskaitą.

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

Ataskaitos išvestis siunčiama į interaktyvią lentelę atskirame lange (Out-GridView).

4 veiksmas. Patikrinkite administratoriaus vaidmenų ataskaitos CSV failą

Scenarijus Export-M365AdminRoles.ps1 PowerShell eksportuoja visus administratoriaus vaidmenis turinčius vartotojus į CSV failą.

Raskite failąAdminRolesReport.csvkelyjeC: temp.

Siūloma skaityti:Eksportuokite „OneDrive“ naudojimo ataskaitą „Microsoft 365“.

Atidarykite CSV failą naudodami mėgstamą programą. Mūsų pavyzdyje tai yra „Microsoft Excel“.

tai viskas!

Išvada

Sužinojote, kaip eksportuoti „Microsoft 365“ administratoriaus vaidmenų narių ataskaitą. Nors iš „Microsoft 365“ administravimo centro galima eksportuoti visus administratoriaus vaidmenis, ataskaitai geriau naudoti „PowerShell“. Taip yra todėl, kad visus vartotojus, o ne grupes matysite kaip narius. Be to, prie eksportuojamo CSV failo, kuris puikiai tinka ataskaitai, galite pridėti visų jums patinkančių ypatybių.

Ar jums patiko šis straipsnis? Jums taip pat gali patikti Kaip sukonfigūruoti „Microsoft Entra Privileged Identity Management“ (PIM). Nepamirškite sekti mūsų ir pasidalinti šiuo straipsniu.

Related Posts