Exportieren Sie Microsoft 365-Verteilergruppenmitglieder mit PowerShell in CSV

Es gibt viele Verteilergruppen und wir möchten alle Mitglieder und Eigentümer gewinnen. Wir können die Gruppen im Microsoft 365 Admin Center einzeln durchgehen, aber das nimmt viel Zeit in Anspruch. Lassen Sie uns die Aufgabe automatisieren und einen Bericht mit allen Mitgliedern, Eigentümern und weiteren Informationen exportieren. In diesem Artikel erfahren Sie, wie Sie Mitglieder einer Microsoft 365-Verteilergruppe mit einem PowerShell-Skript massenhaft in eine CSV-Datei exportieren.

Suchen Sie nach Microsoft 365-Verteilergruppen

Um alle Verteilergruppen 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 Verteilergruppen aufzulisten

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

Erhalten Sie Microsoft 365-Verteilergruppenmitglieder mit einem PowerShell-Skript

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

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

  1. Anzeigename
  2. Beschreibung
  3. PrimarySmtpAddress
  4. SecondarySmtpAddress
  5. Alias
  6. Gruppentyp
  7. Empfängertyp
  8. SyncedFromOnPremises
  9. Mitglied
  10. MemberPrimarySmtpAddress
  11. Mitgliedstyp
  12. Eigentümer
  13. HiddenFromAddressLists
  14. MemberJoinRestriction
  15. MemberDepartRestriction
  16. RequireSenderAuthenticationEnabled
  17. AcceptMessagesOnlyFrom
  18. SendonBehalf
  19. schicken
  20. Wann erstellt
  21. Wann geändert

Notiz:Möchten Sie eine Liste aller Verteilergruppenmitglieder in Exchange Server erhalten? Lesen Sie den Artikel Verteilergruppenmitglieder mit PowerShell in CSV exportieren.

1. Installieren Sie das Exchange Online PowerShell-Modul

Bevor wir fortfahren und die Microsoft 365-Mitglieder und -Besitzer aus allen Verteilergruppen abrufen können, müssen wir das Exchange Online PowerShell-Modul installieren.

Starten Sie Windows PowerShell als Administrator und führen Sie die folgenden Befehle aus.

Install-Module -Name ExchangeOnlineManagement -Force

2. Bereiten Sie das PowerShell-Skript „Mitglieder der Microsoft 365-Verteilergruppe exportieren“ vor

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

  • Temp
  • Skripte

Laden Sie das PowerShell-Skript Export-M365DGMembers.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-M365DGMembers.ps1und legen Sie es in dieC:SkripteOrdner.

<#
    .SYNOPSIS
    Export-M365DGMembers.ps1

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

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

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

    .CHANGELOG
    V1.00, 03/21/2024 - Initial version
    V1.10, 04/20/2024 - Added MemberType property and report members on seperate row
#>

# CSV file export path
$Csvfile = "C:tempM365DGMembers.csv"

# Connect to Exchange Online PowerShell
Connect-ExchangeOnline

# Get all distribution groups
$Groups = Get-DistributionGroup -ResultSize Unlimited

# 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

# Loop through distribution groups and store custom objects in the array
foreach ($Group in $Groups) {

    # 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

    # Retrieve group properties
    $Members = Get-DistributionGroupMember $Group.DistinguishedName -ResultSize Unlimited
    $Owner = $Group.ManagedBy | ForEach-Object { (Get-Recipient $_ -ErrorAction SilentlyContinue).DisplayName }
    $AcceptMessagesOnlyFromDisplayNames = $Group.AcceptMessagesOnlyFrom | ForEach-Object { (Get-Recipient $_).PrimarySmtpAddress }
    $GrantSendOnBehalfToDisplayNames = $Group.GrantSendOnBehalfTo | ForEach-Object { (Get-User $_ -ErrorAction SilentlyContinue).DisplayName }

    # Get SendAs permissions
    $SendAsPermissions = Get-RecipientPermission -Identity $Group.PrimarySmtpAddress
    $SendAsTrustees = $SendAsPermissions.Trustee

    # Create custom objects for each member
    foreach ($Member in $Members) {
        $ReportLine = [PSCustomObject]@{
            DisplayName                        = $Group.DisplayName
            Description                        = $Group.Description
            PrimarySmtpAddress                 = $Group.PrimarySmtpAddress
            SecondarySmtpAddress               = ($Group.EmailAddresses | Where-Object { $_ -clike "smtp*" } | ForEach-Object { $_ -replace "smtp:", "" }) -join ','
            Alias                              = $Group.Alias
            GroupType                          = $Group.GroupType
            RecipientType                      = $Group.RecipientType
            SyncedFromOnPremises               = $Group.IsDirSynced
            Member                             = $Member.DisplayName
            MemberPrimarySmtpAddress           = $Member.PrimarySmtpAddress
            MemberType                         = $Member.RecipientType
            Owners                             = $Owner -join ','
            HiddenFromAddressLists             = $Group.HiddenFromAddressListsEnabled
            MemberJoinRestriction              = $Group.MemberJoinRestriction
            MemberDepartRestriction            = $Group.MemberDepartRestriction
            RequireSenderAuthenticationEnabled = $Group.RequireSenderAuthenticationEnabled
            AcceptMessagesOnlyFrom             = $AcceptMessagesOnlyFromDisplayNames -join ','
            SendOnBehalf                       = $GrantSendOnBehalfToDisplayNames -join ','
            SendAs                             = $SendAsTrustees -join ','
            WhenCreated                        = $Group.WhenCreated
            WhenChanged                        = $Group.WhenChanged
        }
        $Report.Add($ReportLine)
    }
}

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

# Output the custom objects array, sort them, and display in a grid view
$Report | Sort-Object DisplayName | Out-GridView -Title "M365 Distribution Group Members"

# Export report to CSV file
$Report | Sort-Object DisplayName | Export-Csv -Path $Csvfile -NoTypeInformation -Encoding utf8
  • Zeile 22:Bearbeiten Sie den CSV-Dateipfad

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

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

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

c:scripts.Export-M365DGMembers.ps1

4. Öffnen Sie den Bericht „Mitglieder der Microsoft 365-Verteilergruppe“.

Das PowerShell-Skript Export-M365DGMembers.ps1 exportiert alle Mitglieder der Microsoft 365-Verteilergruppe in eine CSV-Datei.

Finden Sie die DateiM365DGMembers.csvim WegC:Temp.

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

Der Bericht zu Mitgliedern und Besitzern der Microsoft 365-Verteilergruppe sieht großartig aus!

Abschluss

Sie haben gelernt, wie Sie Microsoft 365-Verteilergruppenmitglieder mit PowerShell in CSV exportieren. Der Export im Admin Center liefert Ihnen nicht alle gewünschten Eigenschaften. Am besten verwenden Sie das PowerShell-Skript, da Sie es an Ihre Bedürfnisse anpassen können.

Lesen Sie auch:So migrieren Sie Verteilergruppen zu Microsoft 365

Hat Ihnen dieser Artikel gefallen? Möglicherweise gefällt Ihnen auch der Export von Entra ID-App-Registrierungen, Zertifikaten und Ablaufberichten für Geheimnisse. Vergessen Sie nicht, uns zu folgen und diesen Artikel zu teilen.

Related Posts