Exporteer leden van de Microsoft 365-distributiegroep naar CSV met PowerShell

Er zijn veel distributiegroepen en we willen graag alle leden en eigenaren hebben. We kunnen de groepen in het Microsoft 365-beheercentrum individueel doornemen, maar dat kost veel tijd. Laten we de taak dus automatiseren en een rapport exporteren met alle leden, eigenaren en meer informatie. In dit artikel leert u hoe u Microsoft 365-distributiegroepsleden in bulk kunt exporteren naar een CSV-bestand met PowerShell-script.

Zoek Microsoft 365-distributiegroepen

Volg deze stappen om alle distributiegroepen in Microsoft 365 te vinden:

  1. Meld u aan bijMicrosoft Exchange-beheercentrum
  2. KlikOntvangers > Groepen
  3. Klik op degroepstypeom de distributiegroepen weer te geven

Laten we eens kijken naar de volgende stap over het exporteren van Microsoft 365-distributiegroepsleden met PowerShell.

De Export-M365DGMembers.ps1 PowerShell haalt alle Microsoft 365-distributiegroepen op, inclusief hun leden, en exporteert deze naar een CSV-bestand.

Voor elke Microsoft 365-distributiegroep worden de volgende gegevens verzameld:

  1. Weergavenaam
  2. Beschrijving
  3. Primair Smtp-adres
  4. Secundair Smtp-adres
  5. Alias
  6. Groepstype
  7. Ontvangertype
  8. GesynchroniseerdFromOnPremises
  9. Lid
  10. LidPrimairSmtpAddress
  11. Lidtype
  12. Eigenaren
  13. HiddenFromAddressLijsten
  14. LidWordenBeperking
  15. MemberDepartRestriction
  16. RequireSenderAuthenticationEnabled
  17. AccepteerMessagesOnlyFrom
  18. Verzenden namens
  19. versturen
  20. Wanneeraangemaakt
  21. Wanneer gewijzigd

Opmerking:Wilt u een lijst krijgen van alle leden van de distributiegroep in Exchange Server? Lees het artikel Leden van distributiegroepen exporteren naar CSV met PowerShell.

1. Installeer de Exchange Online PowerShell-module

Voordat we verder kunnen gaan en de Microsoft 365-leden en -eigenaren uit alle distributiegroepen kunnen halen, moeten we de Exchange Online PowerShell-module installeren.

Start Windows PowerShell als beheerder en voer de onderstaande opdrachten uit.

Install-Module -Name ExchangeOnlineManagement -Force

2. Bereid het PowerShell-script voor voor het exporteren van Microsoft 365-distributiegroepleden

Maak twee mappen op de(C:)drijfveer:

  • Temp
  • Scripts

Download het PowerShell-script Export-M365DGMembers.ps1 en plaats het inC:scriptsmap. Het script exporteert het CSV-bestand naar hetC:tempmap.

Zorg ervoor dat het bestand is gedeblokkeerd om fouten bij het uitvoeren van het script te voorkomen. Lees meer in het artikel Fout niet digitaal ondertekend bij het uitvoeren van PowerShell-script.

Een andere optie is om de onderstaande code te kopiëren en in Kladblok te plakken. Geef het de naamExporteren-M365DGMembers.ps1en plaats deze in deC:scriptsmap.

<#
    .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
  • Regel 22:Bewerk het CSV-bestandspad

3. Voer het PowerShell-script voor Microsoft 365-distributiegroepleden exporteren uit

Haal alle Microsoft 365-distributiegroepen op, inclusief hun leden en eigenaren, en exporteer ze naar een CSV-bestand.

Voer de onderstaande opdracht uit om het script Export-M365DGMembers.ps1 uit te voeren.

c:scripts.Export-M365DGMembers.ps1

4. Open het rapport Microsoft 365-distributiegroepleden

Het PowerShell-script Export-M365DGMembers.ps1 exporteert alle leden van de Microsoft 365-distributiegroep naar een CSV-bestand.

Zoek het bestandM365DGMembers.csvin het padC:temp.

Open het CSV-bestand met uw favoriete applicatie. In ons voorbeeld is dit Microsoft Excel.

Het rapport over leden en eigenaren van de Microsoft 365-distributiegroep ziet er geweldig uit!

Conclusie

U hebt geleerd hoe u Microsoft 365-distributiegroepsleden naar CSV exporteert met PowerShell. De export in het beheercentrum geeft u niet alle gewenste eigenschappen. Het is het beste om het PowerShell-script te gebruiken, omdat u het aan uw behoeften kunt aanpassen.

Lees ook:Distributiegroepen migreren naar Microsoft 365

Vond je dit artikel leuk? Mogelijk vindt u dit ook interessant Export Entra ID-app-registraties Certificaten en geheimen vervalrapport. Vergeet ons niet te volgen en dit artikel te delen.

Related Posts