W organizacji jest wiele grup i lubimy wiedzieć, którzy członkowie są dodawani do każdej grupy. Możemy ręcznie przeglądać grupy i je zapisywać, ale zajmie to wieki. Inną metodą jest użycie programu PowerShell w celu przyspieszenia procesu. W tym artykule dowiesz się, jak eksportować członków grupy Microsoft 365 do pliku CSV za pomocą programu PowerShell.
Typy grup Microsoft 365
W Microsoft 365 istnieją 4 różne typy grup i chcemy wyeksportować wszystkie te grupy, łącznie z ich członkami.
1.Microsoft 365
Umożliwia zespołom współpracę, udostępniając im grupowy adres e-mail i współdzielony obszar roboczy do rozmów, plików i kalendarzy. W Outlooku są to tak zwane Grupy.
2. Lista dystrybucyjna
Tworzy adres e-mail dla grupy osób.
3. Dynamiczna lista dystrybucyjna
Wysyła wiadomość e-mail do wszystkich członków listy. Lista członków grupy jest aktualizowana co 24 godziny na podstawie ustawionych filtrów i warunków.
4. Zabezpieczenia obsługujące pocztę
Wysyła wiadomości do wszystkich członków grupy i zapewnia dostęp do zasobów takich jak OneDrive, SharePoint i role administratora
Aby znaleźć wszystkie grupy w Microsoft 365, wykonaj następujące kroki:
- Zaloguj się doCentrum administracyjne Microsoft Exchange
- TrzaskOdbiorcy > Grupy
- Kliknij natyp grupyaby wyświetlić listę grup

Przyjrzyjmy się kolejnemu krokowi, jak wyeksportować członków grupy Microsoft 365 za pomocą programu PowerShell.
Uzyskaj członków grupy Microsoft 365 za pomocą skryptu PowerShell
Program PowerShell Export-M365GroupMembers.ps1 pobierze wszystkie typy grup Microsoft 365, łącznie z ich członkami, i wyeksportuje je do pliku CSV.
Dla każdej grupy Microsoft 365 zbiera następujące informacje:
- Identyfikator grupy
- Nazwa wyświetlana grupy
- Typ grupy
- Nazwa wyświetlana użytkownika
- Nazwa główna użytkownika
- Alias użytkownika
- Typ użytkownika
- Konto użytkownika włączone
Notatka:Skrypt wyeksportuje wszystkie typy grup Microsoft 365. Jeśli w określonej grupie nie ma członków, zostanie ona wyświetlona jakoNie dotyczy(nie dotyczy).
1. Zainstaluj moduł Microsoft Graph PowerShell
Zanim będziemy mogli przejść dalej i pobrać członków grupy Microsoft 365 ze wszystkich grup, musimy zainstalować moduł Microsoft Graph PowerShell.
Uruchom Windows PowerShell jako administrator i uruchom poniższe polecenie.
Dowiedz się więcej:Eksportuj raport dotyczący członków ról administracyjnych platformy Microsoft 365
Install-Module Microsoft.Graph -ForceWażny:Zawsze aktualizuj moduł Microsoft Graph PowerShell do najnowszej wersji przed uruchomieniem polecenia cmdlet lub skryptu, aby zapobiec błędom i nieprawidłowym wynikom.
2. Przygotuj skrypt PowerShell Eksportuj członków grupy Microsoft 365
Utwórz dwa foldery na(C:)prowadzić:
- Temp
- Skrypty
Pobierz skrypt PowerShell Export-M365GroupMembers.ps1 i umieść go wC:skryptyfalcówka. Skrypt wyeksportuje plik CSV doC:tempfalcówka.
Upewnij się, że plik jest odblokowany, aby zapobiec błędom podczas uruchamiania skryptu. Przeczytaj więcej w artykule Błąd braku podpisu cyfrowego podczas uruchamiania skryptu PowerShell.
Inną opcją jest skopiowanie i wklejenie poniższego kodu do Notatnika. Podaj nazwęEksportuj-M365GroupMembers.ps1i umieść go wC:skryptyfalcówka.
<#
.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- Linia 21:Edytuj ścieżkę pliku CSV
3. Uruchom skrypt PowerShell Eksportuj członków grupy Microsoft 365
Pobierz wszystkie grupy Microsoft 365, łącznie z ich członkami, i wyeksportuj je do pliku CSV.
Uruchom poniższe polecenie, aby uruchomić skrypt Export-M365GroupMembers.ps1.
c:scripts.Export-M365GroupMembers.ps14. Otwórz raport członków grupy Microsoft 365
Skrypt programu PowerShell Export-M365GroupMembers.ps1 eksportuje wszystkich członków grupy Microsoft 365 do pliku CSV.
Znajdź plikM365CzłonkowieGrupy.csvna ścieżceC:temp.

Otwórz plik CSV ze swoją ulubioną aplikacją. W naszym przykładzie jest to Microsoft Excel.

Raport członków grupy Microsoft 365 wygląda świetnie.
Wniosek
Nauczyłeś się, jak eksportować członków grupy Microsoft 365 do pliku CSV za pomocą programu PowerShell. Chociaż możesz wyeksportować grupy z centrum administracyjnego, nie zostaną pobrani członkowie grupy. Aby utworzyć niestandardowy raport grupowy Microsoft 365, musisz użyć programu PowerShell.
Czy podobał Ci się ten artykuł? Możesz także polubić opcję Blokuj logowanie z udostępnionych skrzynek pocztowych. Nie zapomnij nas obserwować i udostępnić ten artykuł.














