Esporta i membri del gruppo di distribuzione Microsoft 365 in CSV con PowerShell

Esistono molti gruppi di distribuzione e ci piace includere tutti i membri e i proprietari. Possiamo esaminare individualmente i gruppi nell'interfaccia di amministrazione di Microsoft 365, ma ciò richiede molto tempo. Automatizziamo quindi l'attività ed esportiamo un report con tutti i membri, i proprietari e ulteriori informazioni. In questo articolo imparerai come esportare in blocco i membri del gruppo di distribuzione Microsoft 365 in un file CSV con lo script PowerShell.

Trova i gruppi di distribuzione di Microsoft 365

Per trovare tutti i gruppi di distribuzione in Microsoft 365, attenersi alla seguente procedura:

  1. Accedi aInterfaccia di amministrazione di Microsoft Exchange
  2. ClicDestinatari > Gruppi
  3. Fare clic sutipo di gruppoper elencare i gruppi di distribuzione

Diamo un'occhiata al passaggio successivo su come esportare i membri del gruppo di distribuzione Microsoft 365 con PowerShell.

Il PowerShell Export-M365DGMembers.ps1 otterrà tutti i gruppi di distribuzione di Microsoft 365, inclusi i relativi membri, e li esporterà in un file CSV.

Per ogni gruppo di distribuzione Microsoft 365, raccoglie le seguenti informazioni:

  1. Nome da visualizzare
  2. Descrizione
  3. Indirizzo SMTP primario
  4. Indirizzo SMTP secondario
  5. Alias
  6. Tipo di gruppo
  7. Tipo destinatario
  8. SyncedFromOnPremises
  9. Membro
  10. MembroPrimarySmtpAddress
  11. Tipo membro
  12. Proprietari
  13. HiddenFromAddressLists
  14. Restrizione MemberJoin
  15. MemberDepartRestriction
  16. RequireSenderAuthenticationEnabled
  17. Accetta solo messaggi da
  18. SendonPer conto di
  19. Inviare
  20. Quando creato
  21. Quando modificato

Nota:Vuoi ottenere un elenco di tutti i membri del gruppo di distribuzione in Exchange Server? Leggi l'articolo Esportare i membri del gruppo di distribuzione in CSV con PowerShell.

1. Installare il modulo PowerShell di Exchange Online

Prima di poter procedere oltre e ottenere i membri e i proprietari di Microsoft 365 da tutti i gruppi di distribuzione, è necessario installare il modulo PowerShell di Exchange Online.

Avvia Windows PowerShell come amministratore ed esegui i comandi seguenti.

Install-Module -Name ExchangeOnlineManagement -Force

2. Preparare l'esportazione dello script PowerShell dei membri del gruppo di distribuzione Microsoft 365

Crea due cartelle in(C:)guidare:

  • Temp
  • Script

Scarica lo script PowerShell Export-M365DGMembers.ps1 e inserisciloC: scriptcartella. Lo script esporterà il file CSV nel formatoC:tempcartella.

Assicurarsi che il file sia sbloccato per evitare errori durante l'esecuzione dello script. Maggiori informazioni nell'articolo Errore senza firma digitale durante l'esecuzione dello script PowerShell.

Un'altra opzione è copiare e incollare il codice seguente nel Blocco note. Dategli il nomeEsporta-M365DGMembers.ps1e posizionarlo nelC: scriptcartella.

<#
    .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
  • Riga 22:Modifica il percorso del file CSV

3. Eseguire lo script Esporta membri del gruppo di distribuzione Microsoft 365 PowerShell

Ottieni tutti i gruppi di distribuzione di Microsoft 365, inclusi i relativi membri e proprietari, ed esportali in un file CSV.

Esegui il comando seguente per eseguire lo script Export-M365DGMembers.ps1.

c:scripts.Export-M365DGMembers.ps1

4. Aprire il report sui membri del gruppo di distribuzione Microsoft 365

Lo script PowerShell Export-M365DGMembers.ps1 esporta tutti i membri del gruppo di distribuzione Microsoft 365 in un file CSV.

Trova il fascicoloM365DGMembers.csvnel percorsoC:temp.

Apri il file CSV con la tua applicazione preferita. Nel nostro esempio, è Microsoft Excel.

Il report sui membri e sui proprietari del gruppo di distribuzione Microsoft 365 sembra fantastico!

Conclusione

Hai imparato come esportare i membri del gruppo di distribuzione Microsoft 365 in CSV con PowerShell. L'esportazione nell'interfaccia di amministrazione non ti fornisce tutte le proprietà che desideri. È preferibile utilizzare lo script PowerShell perché puoi personalizzarlo in base alle tue esigenze.

Leggi anche:Come migrare i gruppi di distribuzione a Microsoft 365

Ti è piaciuto questo articolo? Potrebbe interessarti anche Registrazioni app Export Entra ID Certificati e Report scadenza segreti. Non dimenticare di seguirci e condividere questo articolo.

Related Posts