Esporta i membri del gruppo Microsoft 365 in CSV con PowerShell

Ci sono molti gruppi nell'organizzazione e ci piace sapere quali membri vengono aggiunti a ciascun gruppo. Possiamo scorrere manualmente i gruppi e scriverli, ma ciò richiederà molto tempo. Un altro metodo consiste nell'utilizzare PowerShell per accelerare il processo. In questo articolo imparerai come esportare i membri del gruppo Microsoft 365 in CSV con PowerShell.

Tipi di gruppo di Microsoft 365

Esistono 4 diversi tipi di gruppi in Microsoft 365 e vogliamo esportare tutti questi gruppi, inclusi i relativi membri.

1.Microsoft365

Consente ai team di collaborare fornendo loro un'e-mail di gruppo e uno spazio di lavoro condiviso per conversazioni, file e calendari. In Outlook, questi sono chiamati Gruppi.

2. Elenco di distribuzione

Crea un indirizzo email per un gruppo di persone.

3. Lista di distribuzione dinamica

Invia e-mail a tutti i membri della lista. L'elenco dei membri del gruppo viene aggiornato ogni 24 ore, in base ai filtri e alle condizioni impostati.

4. Sicurezza abilitata alla posta

Invia messaggi a tutti i membri del gruppo e dà accesso a risorse come ‎OneDrive‎, ‎SharePoint‎ e ruoli di amministratore

Trova gruppi di Microsoft 365

Per trovare tutti i gruppi 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

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

Ottieni membri del gruppo Microsoft 365 con lo script PowerShell

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

Per ogni gruppo Microsoft 365 vengono raccolte le informazioni seguenti:

  1. ID gruppo
  2. Nome visualizzato gruppo
  3. Tipo di gruppo
  4. Nome visualizzato utente
  5. NomePrincipaleUtente
  6. Aliasutente
  7. Tipoutente
  8. Accountutenteabilitato

Nota:Lo script esporterà tutti i tipi di gruppi di Microsoft 365. Se non ci sono membri del gruppo in un gruppo specifico, verrà visualizzato comeN / A(non applicabile).

1. Installa il modulo Microsoft Graph PowerShell

Prima di poter procedere oltre e ottenere i membri del gruppo Microsoft 365 da tutti i gruppi, è necessario installare il modulo Microsoft Graph PowerShell.

Avvia Windows PowerShell come amministratore ed esegui il comando seguente.

Install-Module Microsoft.Graph -Force

Importante:Aggiorna sempre alla versione più recente del modulo Microsoft Graph PowerShell prima di eseguire un cmdlet o uno script per evitare errori e risultati non corretti.

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

Crea due cartelle in(C:)guidare:

  • Temp
  • Script

Scarica lo script PowerShell Export-M365GroupMembers.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-M365GroupMembers.ps1e posizionarlo nelC: scriptcartella.

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

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

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

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

c:scripts.Export-M365GroupMembers.ps1

4. Aprire il report sui membri del gruppo Microsoft 365

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

Vedi anche:Esporta report sui membri dei ruoli di amministratore di Microsoft 365

Trova il fascicoloM365GroupMembers.csvnel percorsoC:temp.

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

Il report sui membri del gruppo Microsoft 365 sembra ottimo.

Conclusione

Hai imparato come esportare i membri del gruppo Microsoft 365 in CSV con PowerShell. Sebbene sia possibile esportare i gruppi dall'interfaccia di amministrazione, non vengono recuperati i membri del gruppo. È necessario utilizzare PowerShell per creare un report di gruppo Microsoft 365 personalizzato.

Ti è piaciuto questo articolo? Potrebbe interessarti anche Blocca l'accesso dalle caselle di posta condivise. Non dimenticare di seguirci e condividere questo articolo.

Related Posts