Eksporter Microsoft 365-distribusjonsgruppemedlemmer til CSV med PowerShell

Det er mange distribusjonsgrupper, og vi liker å få med alle medlemmene og eierne. Vi kan gå gjennom gruppene i Microsoft 365-administrasjonssenteret individuelt, men det tar mye tid. Så la oss automatisere oppgaven og eksportere en rapport med alle medlemmer, eiere og mer informasjon. I denne artikkelen lærer du hvordan du masseeksporterer Microsoft 365-distribusjonsgruppemedlemmer til CSV-fil med PowerShell-skript.

Finn Microsoft 365-distribusjonsgrupper

Følg disse trinnene for å finne alle distribusjonsgruppene i Microsoft 365:

  1. Logg påMicrosoft Exchange administrasjonssenter
  2. KlikkMottakere > Grupper
  3. Klikk pågruppetypefor å liste opp distribusjonsgruppene

La oss se på neste trinn for hvordan du eksporterer Microsoft 365-distribusjonsgruppemedlemmer med PowerShell.

Export-M365DGMembers.ps1 PowerShell vil hente alle Microsoft 365-distribusjonsgruppene, inkludert medlemmene deres, og eksportere dem til en CSV-fil.

For hver Microsoft 365-distribusjonsgruppe samler den inn følgende informasjon:

  1. Visningsnavn
  2. Beskrivelse
  3. PrimarySmtpAddress
  4. SecondarySmtpAddress
  5. Alias
  6. GroupType
  7. RecipientType
  8. Synkronisert Fra OnPremises
  9. Medlem
  10. MemberPrimarySmtpAddress
  11. MemberType
  12. Eiere
  13. HiddenFromAddressLists
  14. Medlemsbegrensning
  15. MemberDepartRestriction
  16. RequireSenderAuthenticationEnabled
  17. AcceptMessagesOnly From
  18. SendonBehalf
  19. sende
  20. Når opprettet
  21. Når Endret

Note:Ønsker du å få en liste over alle distribusjonsgruppemedlemmene i Exchange Server? Les artikkelen Eksporter distribusjonsgruppemedlemmer til CSV med PowerShell.

Foreslått å lese:Slik bruker du Export-CSV i PowerShell

1. Installer Exchange Online PowerShell-modulen

Før vi kan gå videre og få Microsoft 365-medlemmene og eierne fra alle distribusjonsgruppene, må vi installere Exchange Online PowerShell-modulen.

Start Windows PowerShell som administrator og kjør kommandoene nedenfor.

Install-Module -Name ExchangeOnlineManagement -Force

2. Forbered PowerShell-skriptet Eksporter Microsoft 365-distribusjonsgruppemedlemmer

Opprett to mapper på(C:)kjøre:

  • Temp
  • Skript

Last ned Export-M365DGMembers.ps1 PowerShell-skriptet og plasser det iC:skriptmappe. Skriptet vil eksportere CSV-filen tilC:tempmappe.

Sørg for at filen er opphevet for å forhindre feil når du kjører skriptet. Les mer i artikkelen Ikke digitalt signert feil ved kjøring av PowerShell-skript.

Et annet alternativ er å kopiere og lime inn koden nedenfor i Notisblokk. Gi den navnetEksporter-M365DGMembers.ps1og plasser den iC:skriptmappe.

<#
    .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
  • Linje 22:Rediger CSV-filbanen

3. Kjør PowerShell-skriptet Eksporter Microsoft 365 distribusjonsgruppemedlemmer

Få alle Microsoft 365-distribusjonsgruppene, inkludert deres medlemmer og eiere, og eksporter dem til en CSV-fil.

Kjør kommandoen nedenfor for å kjøre skriptet Export-M365DGMembers.ps1.

c:scripts.Export-M365DGMembers.ps1

4. Åpne Microsoft 365-rapporten for distribusjonsgruppemedlemmer

Export-M365DGMembers.ps1 PowerShell-skriptet eksporterer alle Microsoft 365-distribusjonsgruppemedlemmene til en CSV-fil.

Finn filenM365DGMembers.csvi stienC:temp.

Åpne CSV-filen med favorittappen din. I vårt eksempel er det Microsoft Excel.

Rapporten om Microsoft 365-distribusjonsgruppemedlemmer og eiere ser bra ut!

Konklusjon

Du lærte hvordan du eksporterer Microsoft 365-distribusjonsgruppemedlemmer til CSV med PowerShell. Eksporten i administrasjonssenteret gir deg ikke alle egenskapene du ønsker. Det er best å bruke PowerShell-skriptet fordi du kan tilpasse det til dine behov.

Likte du denne artikkelen? Du kan også like Eksporter Entra ID-appregistreringer Sertifikater og hemmeligheter utløpsrapport. Ikke glem å følge oss og dele denne artikkelen.

Related Posts