Exportieren Sie Microsoft 365-Gruppenmitglieder mit PowerShell in CSV

Es gibt viele Gruppen in der Organisation und wir möchten gerne wissen, welche Mitglieder zu jeder Gruppe hinzugefügt werden. Wir können die Gruppen manuell durchgehen und aufschreiben, aber das wird ewig dauern. Eine andere Methode besteht darin, PowerShell zu verwenden, um den Prozess zu beschleunigen. In diesem Artikel erfahren Sie, wie Sie Microsoft 365-Gruppenmitglieder mit PowerShell in CSV exportieren.

Microsoft 365-Gruppentypen

Es gibt 4 verschiedene Gruppentypen in Microsoft 365 und wir möchten alle diese Gruppen, einschließlich ihrer Mitglieder, exportieren.

1. Microsoft 365

Ermöglicht Teams die Zusammenarbeit, indem ihnen eine Gruppen-E-Mail-Adresse und ein gemeinsamer Arbeitsbereich für Konversationen, Dateien und Kalender zur Verfügung gestellt werden. In Outlook werden diese als Gruppen bezeichnet.

2. Verteilerliste

Erstellt eine E-Mail-Adresse für eine Gruppe von Personen.

3. Dynamische Verteilerliste

Sendet eine E-Mail an alle Mitglieder der Liste. Die Mitgliederliste der Gruppe wird alle 24 Stunden basierend auf den von Ihnen festgelegten Filtern und Bedingungen aktualisiert.

4. E-Mail-fähige Sicherheit

Sendet Nachrichten an alle Mitglieder der Gruppe und gewährt Zugriff auf Ressourcen wie ‎OneDrive‎, ‎SharePoint‎ und Administratorrollen

Finden Sie Microsoft 365-Gruppen

Um alle Gruppen in Microsoft 365 zu finden, gehen Sie folgendermaßen vor:

  1. Melden Sie sich anMicrosoft Exchange Admin Center
  2. KlickenEmpfänger > Gruppen
  3. Klicken Sie aufGruppentypum die Gruppen aufzulisten

Schauen wir uns den nächsten Schritt zum Exportieren von Microsoft 365-Gruppenmitgliedern mit PowerShell an.

Erhalten Sie Microsoft 365-Gruppenmitglieder mit einem PowerShell-Skript

Die PowerShell „Export-M365GroupMembers.ps1“ ruft alle Microsoft 365-Gruppentypen, einschließlich ihrer Mitglieder, ab und exportiert sie in eine CSV-Datei.

Für jede Microsoft 365-Gruppe werden die folgenden Informationen erfasst:

  1. Gruppen-ID
  2. GroupDisplayName
  3. Gruppentyp
  4. Benutzeranzeigename
  5. Benutzerprinzipalname
  6. Benutzeralias
  7. Benutzertyp
  8. UserAccountEnabled

Notiz:Das Skript exportiert alle Microsoft 365-Gruppentypen. Wenn in einer bestimmten Gruppe keine Gruppenmitglieder vorhanden sind, wird dies als angezeigtN / A(nicht anwendbar).

1. Installieren Sie das Microsoft Graph PowerShell-Modul

Bevor wir fortfahren und die Microsoft 365-Gruppenmitglieder aus allen Gruppen abrufen können, müssen wir das Microsoft Graph PowerShell-Modul installieren.

Starten Sie Windows PowerShell als Administrator und führen Sie den folgenden Befehl aus.

Install-Module Microsoft.Graph -Force

Wichtig:Aktualisieren Sie immer auf die neueste Version des Microsoft Graph PowerShell-Moduls, bevor Sie ein Cmdlet oder Skript ausführen, um Fehler und falsche Ergebnisse zu vermeiden.

2. Bereiten Sie das PowerShell-Skript zum Exportieren von Microsoft 365-Gruppenmitgliedern vor

Erstellen Sie zwei Ordner auf dem(C:)fahren:

  • Temp
  • Skripte

Laden Sie das PowerShell-Skript Export-M365GroupMembers.ps1 herunter und platzieren Sie es inC:SkripteOrdner. Das Skript exportiert die CSV-Datei in dasC:TempOrdner.

Stellen Sie sicher, dass die Datei entsperrt ist, um Fehler beim Ausführen des Skripts zu vermeiden. Lesen Sie mehr im Artikel Fehler „Nicht digital signiert“ beim Ausführen des PowerShell-Skripts.

Eine andere Möglichkeit besteht darin, den folgenden Code zu kopieren und in Notepad einzufügen. Geben Sie ihm den NamenExport-M365GroupMembers.ps1und legen Sie es in dieC:SkripteOrdner.

<#
    .SYNOPSIS
    Export-M365GroupMembers.ps1

    .DESCRIPTION
    Export Microsoft 365 Group Members to CSV file with PowerShell.

    .LINK
    www.alitajran.com/export-microsoft-365-group-members-to-csv-powershell/

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

    .CHANGELOG
    V1.00, 03/18/2024 - Initial version
#>

# CSV file path to export
$CsvPath = "C:tempM365GroupMembers.csv"

# Connect to Microsoft Graph with specified scopes
Connect-MgGraph -Scopes "User.Read.All", "Group.Read.All"

# Retrieve all groups
$groups = Get-MgGroup -All

# Get properties
$Properties = @(
    'Id', 'DisplayName', 'UserPrincipalName', 'UserType', 'AccountEnabled'
)

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

# Set up the progress bar parameters
$totalGroups = $groups.Count
$currentGroup = 0

# Iterate through each group and retrieve group members
foreach ($group in $groups) {
    # Retrieve group members using the valid Group ID
    $members = Get-MgGroupMember -GroupId $group.id -All

    # Determine the group type
    $groupType = if ($group.groupTypes -eq "Unified" -and $group.securityEnabled) { "Microsoft 365 (security-enabled)" }
    elseif ($group.groupTypes -eq "Unified" -and !$group.securityEnabled) { "Microsoft 365" }
    elseif (!($group.groupTypes -eq "Unified") -and $group.securityEnabled -and $group.mailEnabled) { "Mail-enabled security" }
    elseif (!($group.groupTypes -eq "Unified") -and $group.securityEnabled) { "Security" }
    elseif (!($group.groupTypes -eq "Unified") -and $group.mailEnabled) { "Distribution" }
    else { "N/A" }

    # If there are no members, create an object with empty values
    if ($members.Count -eq 0) {
        $ReportLine = [PSCustomObject][ordered]@{
            GroupId            = $group.Id
            GroupDisplayName   = $group.DisplayName
            GroupType          = $groupType
            UserDisplayName    = "N/A"
            UserPrincipalName  = "N/A"
            UserAlias          = "N/A"
            UserType           = "N/A"
            UserAccountEnabled = "N/A"
        }
        # Add the report line to the List
        $Report.Add($ReportLine)
    }
    else {
        # Iterate through each group member and retrieve user details
        foreach ($member in $members) {
            $user = Get-MgUser -UserId $member.Id -Property $Properties -ErrorAction SilentlyContinue | Select-Object $Properties

            # Check if $user is not null before accessing properties
            if ($user.Count -ne 0) {
                # Extract the alias from the UserPrincipalName
                $alias = $user.UserPrincipalName.Split("@")[0]

                # Create an ordered custom object with properties in a specific order
                $ReportLine = [PSCustomObject][ordered]@{
                    GroupId            = $group.Id
                    GroupDisplayName   = $group.DisplayName
                    GroupType          = $groupType
                    UserDisplayName    = $user.DisplayName
                    UserPrincipalName  = $user.UserPrincipalName
                    UserAlias          = $alias
                    UserType           = $user.UserType
                    UserAccountEnabled = $user.AccountEnabled
                }

                # Add the report line to the List
                $Report.Add($ReportLine)
            }
        }
    }

    # Update the progress bar
    $currentGroup++
    $status = "{0:N0}" -f ($currentGroup / $totalGroups * 100)

    $progressParams = @{
        Activity        = "Retrieving Group Members"
        Status          = "Processing group: $($group.DisplayName) - $currentGroup of $totalGroups : $status% completed"
        PercentComplete = ($currentGroup / $totalGroups) * 100
    }

    Write-Progress @progressParams
}

# Complete the progress bar
Write-Progress -Activity "Retrieving Group Members" -Completed

# Export all user information to a CSV file
$Report | Sort-Object GroupDisplayName | Export-Csv $CsvPath -NoTypeInformation -Encoding utf8
  • Zeile 21:Bearbeiten Sie den CSV-Dateipfad

3. Führen Sie das PowerShell-Skript „Microsoft 365-Gruppenmitglieder exportieren“ aus

Rufen Sie alle Microsoft 365-Gruppen, einschließlich ihrer Mitglieder, ab und exportieren Sie sie in eine CSV-Datei.

Führen Sie den folgenden Befehl aus, um das Skript Export-M365GroupMembers.ps1 auszuführen.

Mehr lesen:Exportieren Sie Microsoft 365-Verteilergruppenmitglieder mit PowerShell in CSV

c:scripts.Export-M365GroupMembers.ps1

4. Öffnen Sie den Microsoft 365-Gruppenmitgliederbericht

Das PowerShell-Skript Export-M365GroupMembers.ps1 exportiert alle Microsoft 365-Gruppenmitglieder in eine CSV-Datei.

Finden Sie die DateiM365GroupMembers.csvim WegC:Temp.

Öffnen Sie die CSV-Datei mit Ihrer Lieblingsanwendung. In unserem Beispiel ist es Microsoft Excel.

Der Microsoft 365-Gruppenmitgliederbericht sieht großartig aus.

Abschluss

Sie haben gelernt, wie Sie Microsoft 365-Gruppenmitglieder mit PowerShell in CSV exportieren. Sie können die Gruppen zwar aus dem Admin Center exportieren, die Gruppenmitglieder werden jedoch nicht abgerufen. Sie müssen PowerShell verwenden, um einen benutzerdefinierten Microsoft 365-Gruppenbericht zu erstellen.

Hat Ihnen dieser Artikel gefallen? Möglicherweise gefällt Ihnen auch die Option „Anmeldung über freigegebene Postfächer blockieren“. Vergessen Sie nicht, uns zu folgen und diesen Artikel zu teilen.

Related Posts