Microsoft 365 grup üyelerini PowerShell ile CSV'ye aktarma
Kuruluşta birçok grup var ve her gruba hangi üyelerin eklendiğini bilmek isteriz. Grupları manuel olarak inceleyebilir ve bunları yazabiliriz, ancak bu çok zaman alır. Diğer bir yöntem ise süreci hızlandırmak için PowerShell kullanmaktır. Bu makalede Microsoft 365 grup üyelerini PowerShell ile CSV'ye nasıl aktaracağınızı öğreneceksiniz.
Microsoft 365 grup türleri
Microsoft 365'te 4 farklı grup türü bulunmaktadır ve biz bu grupların üyeleri dahil tümünü dışarı aktarmak istiyoruz.
1. Microsoft 365
Ekiplere bir grup e-postası ve konuşmalar, dosyalar ve takvimler için paylaşılan bir çalışma alanı vererek işbirliği yapmalarına olanak tanır. Outlook'ta bunlara Gruplar denir.
2. Dağıtım Listesi
Bir grup insan için bir e-posta adresi oluşturur.
3. Dinamik dağıtım listesi
Listenin tüm üyelerine e-posta gönderir. Grubun üyelik listesi, belirlediğiniz filtrelere ve koşullara göre 24 saatte bir güncellenir.
4. Posta özellikli güvenlik
Grubun tüm üyelerine mesaj gönderir ve OneDrive, SharePoint gibi kaynaklara ve yönetici rollerine erişim sağlar
Microsoft 365 gruplarını bulun
Microsoft 365'teki tüm grupları bulmak için şu adımları izleyin:
Microsoft Exchange yönetim merkezinde oturum açın
Alıcılar > Gruplar'ı tıklayın
Grupları listelemek için grup türünü tıklayın
PowerShell ile Microsoft 365 grup üyelerinin nasıl dışarı aktarılacağına ilişkin bir sonraki adıma bakalım.
PowerShell betiğiyle Microsoft 365 grup üyelerini edinin
Export-M365GroupMembers.ps1 PowerShell, üyeleri de dahil olmak üzere tüm Microsoft 365 grup türlerini alacak ve bunları bir CSV dosyasına aktaracaktır.
Her Microsoft 365 grubu için aşağıdaki bilgileri toplar:
Grup kimliği
GrupGörünenAdı
Grup Türü
KullanıcıGörünenAdı
KullanıcıPrincipalName
KullanıcıAlias
Kullanıcı tipi
-
Kullanıcı Hesabı Etkinleştirildi
Not: Komut dosyası tüm Microsoft 365 grup türlerini dışa aktaracaktır. Belirli bir grupta grup üyesi yoksa Yok (geçerli değil) olarak gösterilir.
1. Microsoft Graph PowerShell modülünü yükleyin
Daha fazla ilerlemeden ve tüm gruplardan Microsoft 365 grup üyelerini alabilmemiz için Microsoft Graph PowerShell modülünü yüklememiz gerekiyor.
Windows PowerShell'i yönetici olarak başlatın ve aşağıdaki komutları çalıştırın.
Install-Module Microsoft.Graph -ForceInstall-Module Microsoft.Graph.Beta -AllowClobber -ForceÖnemli: Her zaman Microsoft Graph PowerShell ve Microsoft Graph Beta PowerShell modüllerini yükleyin. Bunun nedeni, bazı cmdlet'lerin henüz son sürümde mevcut olmaması ve çalışmayacak olmasıdır. Hataları ve yanlış sonuçları önlemek için bir cmdlet'i veya betiği çalıştırmadan önce her iki modülü de en son sürüme güncelleyin.
2. Microsoft 365 grup üyelerini Dışa Aktarma PowerShell betiğini hazırlayın
(C:) sürücüsünde iki klasör oluşturun:
Sıcaklık
Kodlar
Export-M365GroupMembers.ps1 PowerShell betiğini indirin ve C:\scripts klasörüne yerleştirin. Komut dosyası, CSV dosyasını C:\temp klasörüne aktaracaktır.
Komut dosyasını çalıştırırken hataları önlemek için dosyanın engellemesinin kaldırıldığından emin olun. PowerShell betiğini çalıştırırken dijital olarak imzalanmamış hata makalesinde daha fazlasını okuyun.
Diğer bir seçenek de aşağıdaki kodu kopyalayıp Not Defteri'ne yapıştırmaktır. Ona Export-M365GroupMembers.ps1 adını verin ve C:\scripts klasörüne yerleştirin.
<#
.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:\temp\M365GroupMembers.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 an array to store user information
$allUsers = @()
# 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) {
$Objects = [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"
}
$allUsers += $Objects
}
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
$Objects = [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 ordered custom object to the array
$allUsers += $Objects
}
}
}
# 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
$allUsers | Sort-Object GroupDisplayName | Export-Csv $CsvPath -NoTypeInformation -Encoding utf821. Satır: CSV dosya yolunu düzenleyin
3. Microsoft 365 grup üyeleri PowerShell betiğini Dışa Aktarmayı çalıştırın
Üyeleri de dahil olmak üzere tüm Microsoft 365 gruplarını alın ve bunları bir CSV dosyasına aktarın.
Export-M365GroupMembers.ps1 betiğini çalıştırmak için aşağıdaki komutu çalıştırın.
c:\scripts\.\Export-M365GroupMembers.ps14. Microsoft 365 grup üyeleri raporunu açın
Export-M365GroupMembers.ps1 PowerShell betiği, tüm Microsoft 365 grup üyelerini bir CSV dosyasına aktarır.
C:\temp yolunda M365GroupMembers.csv dosyasını bulun.
CSV dosyasını favori uygulamanızla açın. Örneğimizde Microsoft Excel var.
Microsoft 365 grup üyeleri raporu harika görünüyor.
Devamını oku: Microsoft 365 devre dışı bırakılmış kullanıcılar raporunu dışarı aktarma »
Çözüm
Microsoft 365 grup üyelerini PowerShell ile CSV'ye nasıl aktaracağınızı öğrendiniz. Grupları yönetici merkezinden dışa aktarabilseniz de grup üyelerini almaz. Özel bir Microsoft 365 grup raporu oluşturmak için PowerShell'i kullanmanız gerekir.
Bu makaleyi beğendiniz mi? Ayrıca paylaşılan posta kutularından oturum açmayı engelle seçeneğini de beğenebilirsiniz. Bizi takip etmeyi ve bu yazımızı paylaşmayı unutmayın.


