Microsoft 365 dağıtım grubu üyelerini PowerShell ile CSV'ye aktarma
Pek çok dağıtım grubu var ve tüm üyeleri ve sahipleri bir araya getirmeyi seviyoruz. Microsoft 365 yönetim merkezindeki grupları tek tek inceleyebiliriz ancak bu çok zaman alır. Öyleyse görevi otomatikleştirelim ve tüm üyelerin, sahiplerin ve daha fazla bilginin yer aldığı bir raporu dışa aktaralım. Bu makalede, Microsoft 365 dağıtım grubu üyelerini PowerShell betiğiyle CSV dosyasına toplu olarak nasıl aktaracağınızı öğreneceksiniz.
Microsoft 365 dağıtım gruplarını bulun
Microsoft 365'teki tüm dağıtım gruplarını bulmak için şu adımları izleyin:
Microsoft Exchange yönetim merkezinde oturum açın
Alıcılar > Gruplar'ı tıklayın
Dağıtım gruplarını listelemek için grup türüne tıklayın
Microsoft 365 dağıtım grubu üyelerinin PowerShell ile nasıl dışarı aktarılacağına ilişkin bir sonraki adıma bakalım.
PowerShell betiğiyle Microsoft 365 dağıtım grubu üyelerini edinin
Export-M365DGMembers.ps1 PowerShell, üyeleri de dahil olmak üzere tüm Microsoft 365 dağıtım gruplarını alacak ve bunları bir CSV dosyasına aktaracaktır.
Her Microsoft 365 dağıtım grubu için aşağıdaki bilgileri toplar:
Ekran adı
Tanım
BirincilSmtpAdresi
İkincilSmtpAdresi
Takma ad
Grup Türü
-
Alıcı Türü
SyncedFromOnPremises
Üye
ÜyeBirincilSmtpAdresi
Üye Türü
Sahipler
Adres Listelerinden Gizli
ÜyeKatılımKısıtlaması
ÜyeDepartKısıtlama
RequireSenderAuthenticationEnabled
-
YalnızcaGönderen Mesajları Kabul Et
Sendon Adına
Farklı Gönder
Ne ZamanOluşturuldu
Ne ZamanDeğiştirildi
Not: Exchange Server'daki tüm dağıtım grubu üyelerinin bir listesini almak ister misiniz? PowerShell ile dağıtım grubu üyelerini CSV'ye aktarma makalesini okuyun.
1. Microsoft Graph PowerShell modülünü yükleyin
Daha fazla ilerlemeden ve tüm dağıtım gruplarından Microsoft 365 üyelerini ve sahiplerini 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 dağıtım grubu üyelerinin PowerShell betiğini Dışa Aktarmaya Hazırlayın
(C:) sürücüsünde iki klasör oluşturun:
Sıcaklık
Kodlar
Export-M365DGMembers.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. Buna Export-M365DGMembers.ps1 adını verin ve C:\scripts klasörüne yerleştirin.
<#
.SYNOPSIS
Export-M365DGMembers.ps1
.DESCRIPTION
Export Microsoft 365 Distribution Group Members to CSV file with PowerShell.
.LINK
www.alitajran.com/export-microsoft-365-distribution-group-members-to-csv-powershell/
.NOTES
Written by: ALI TAJRAN
Website: www.alitajran.com
LinkedIn: linkedin.com/in/alitajran
.CHANGELOG
V1.00, 03/21/2024 - Initial version
V1.10, 04/20/2024 - Added MemberType property and report members on seperate row
#>
# CSV file export path
$Csvfile = "C:\temp\M365DGMembers.csv"
# Connect to Exchange Online PowerShell
Connect-ExchangeOnline
# Get all distribution groups
$Groups = Get-DistributionGroup -ResultSize Unlimited
# Create an empty array to store the custom objects
$customObjects = @()
# Set up the progress bar parameters
$totalGroups = $Groups.Count
$currentGroup = 0
# Loop through distribution groups and store custom objects in the array
foreach ($Group in $Groups) {
$GroupDN = $Group.DistinguishedName
$DisplayName = $Group.DisplayName
$Description = $Group.Description
$PrimarySmtpAddress = $Group.PrimarySmtpAddress
$SecondarySmtpAddress = $Group.EmailAddresses | Where-Object { $_ -clike "smtp*" } | ForEach-Object { $_ -replace "smtp:", "" }
$GroupType = $Group.GroupType
$RecipientType = $Group.RecipientType
$IsDirSynced = $Group.IsDirSynced
$Members = Get-DistributionGroupMember $GroupDN -ResultSize Unlimited
$Owner = $Group.ManagedBy | ForEach-Object { (Get-Recipient $_ -ErrorAction SilentlyContinue).DisplayName }
$Alias = $Group.Alias
$HiddenFromAddressLists = $Group.HiddenFromAddressListsEnabled
$MemberJoinRestriction = $Group.MemberJoinRestriction
$MemberDepartRestriction = $Group.MemberDepartRestriction
$RequireSenderAuthenticationEnabled = $Group.RequireSenderAuthenticationEnabled
$AcceptMessagesOnlyFromIDs = $Group.AcceptMessagesOnlyFrom
$AcceptMessagesDisplayNames = $AcceptMessagesOnlyFromIDs | ForEach-Object { (Get-Recipient $_).PrimarySmtpAddress }
$GrantSendOnBehalfToIDs = $Group.GrantSendOnBehalfTo
$GrantSendOnBehalfToDisplayNames = $GrantSendOnBehalfToIDs | ForEach-Object { (Get-User $_ -ErrorAction SilentlyContinue).DisplayName }
$WhenCreated = $Group.WhenCreated
$WhenChanged = $Group.WhenChanged
# Get SendAs permissions
$SendAsPermissions = Get-RecipientPermission -Identity $PrimarySmtpAddress
$SendAsTrustees = $SendAsPermissions.Trustee
foreach ($Member in $Members) {
# Create a custom object for each member and add it to the array
$customObject = [PSCustomObject]@{
DisplayName = $DisplayName
Description = $Description
PrimarySmtpAddress = $PrimarySmtpAddress
SecondarySmtpAddress = ($SecondarySmtpAddress -join ',')
Alias = $Alias
GroupType = $GroupType
RecipientType = $RecipientType
SyncedFromOnPremises = $IsDirSynced
Member = $Member.DisplayName
MemberPrimarySmtpAddress = $Member.PrimarySmtpAddress
MemberType = $Member.RecipientType
Owners = ($Owner -join ',')
HiddenFromAddressLists = $HiddenFromAddressLists
MemberJoinRestriction = $MemberJoinRestriction
MemberDepartRestriction = $MemberDepartRestriction
RequireSenderAuthenticationEnabled = $RequireSenderAuthenticationEnabled
AcceptMessagesOnlyFrom = ($AcceptMessagesDisplayNames -join ',')
SendOnBehalf = ($GrantSendOnBehalfToDisplayNames -join ',')
SendAs = ($SendAsTrustees -join ',')
WhenCreated = $WhenCreated
WhenChanged = $WhenChanged
}
$customObjects += $customObject
}
# 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
# Output the custom objects array, sort them, and display in a grid view
$customObjects | Sort-Object DisplayName | Out-GridView -Title "M365 Distribution Group Members"
# Export report to CSV file
$customObjects | Sort-Object DisplayName | Export-Csv -Path $Csvfile -NoTypeInformation -Encoding utf8Satır 22: CSV dosya yolunu düzenleyin
3. Microsoft 365 dağıtım grubu üyeleri PowerShell betiğini Dışa Aktarmayı çalıştırın
Üyeleri ve sahipleri de dahil olmak üzere tüm Microsoft 365 dağıtım gruplarını edinin ve bunları bir CSV dosyasına aktarın.
Export-M365DGMembers.ps1 betiğini çalıştırmak için aşağıdaki komutu çalıştırın.
c:\scripts\.\Export-M365DGMembers.ps14. Microsoft 365 dağıtım grubu üyeleri raporunu açın
Export-M365DGMembers.ps1 PowerShell betiği, tüm Microsoft 365 dağıtım grubu üyelerini bir CSV dosyasına aktarır.
C:\temp yolunda M365DGMembers.csv dosyasını bulun.
CSV dosyasını favori uygulamanızla açın. Örneğimizde Microsoft Excel var.
Microsoft 365 dağıtım grubu üyeleri ve sahipleri raporu harika görünüyor!
Devamını oku: Exchange Hybrid'de dağıtım grubu oluşturma »
Çözüm
Microsoft 365 dağıtım grubu üyelerini PowerShell ile CSV'ye nasıl aktaracağınızı öğrendiniz. Yönetim merkezindeki dışa aktarma işlemi size istediğiniz tüm özellikleri vermez. İhtiyaçlarınıza göre özelleştirebileceğiniz için PowerShell betiğini kullanmak en iyisidir.
Bu makaleyi beğendiniz mi? Ayrıca Dışa Aktarma Entra ID uygulama kayıtları Sertifikaları ve Sırları sona erme raporunu da beğenebilirsiniz. Bizi takip etmeyi ve bu yazımızı paylaşmayı unutmayın.


