Eksportuj członków grupy Microsoft 365 do pliku CSV za pomocą programu PowerShell

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:

  1. Zaloguj się doCentrum administracyjne Microsoft Exchange
  2. TrzaskOdbiorcy > Grupy
  3. 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:

  1. Identyfikator grupy
  2. Nazwa wyświetlana grupy
  3. Typ grupy
  4. Nazwa wyświetlana użytkownika
  5. Nazwa główna użytkownika
  6. Alias ​​użytkownika
  7. Typ użytkownika
  8. 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 -Force

Waż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.ps1

4. 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ł.

Related Posts