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:
- Accedi aInterfaccia di amministrazione di Microsoft Exchange
- ClicDestinatari > Gruppi
- 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:
- ID gruppo
- Nome visualizzato gruppo
- Tipo di gruppo
- Nome visualizzato utente
- NomePrincipaleUtente
- Aliasutente
- Tipoutente
- 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 -ForceImportante: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.ps14. 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.











