PowerShell ile dağıtım grubunu ve üyelerini dışarı aktarma
Dağıtım grubu bilgilerini Microsoft 365 yönetim merkezinden dışarı aktarabilirsiniz ancak tüm ayrıntılar gösterilmez. PowerShell ile dağıtım gruplarının ayrıntılı verilerini CSV dosyasına aktarmak daha hızlıdır. Bu makalede PowerShell ile bir dağıtım grubunu ve üyelerini nasıl dışarı aktaracağınızı öğreneceksiniz.
Exchange Online'a bağlanın
PowerShell komutlarını çalıştırabilmek için Exchange Online PowerShell'e bağlanmanız gerekir. Windows PowerShell'i yönetici olarak açın, aşağıdaki cmdlet'i çalıştırın ve yönetici kimlik bilgilerinizle oturum açın.
Connect-ExchangeOnlineDağıtım grubu listesini ve üyelerini görüntüleyin
PowerShell çıktısında dağıtım grupları hakkındaki bilgilerin nasıl görüntüleneceğini göstereceğiz. PowerShell konsolunda görüntüleyebileceğiniz tüm bilgilerin aynı zamanda CSV dosyasına da aktarılabileceğini unutmayın.
Dağıtım grubu listesini görüntüle
Mevcut tüm (güvenlik) dağıtım gruplarının bilgilerini içeren bir liste alalım. Mevcut dağıtım gruplarını veya posta özellikli güvenlik gruplarını görüntülemek için Get-DistributionGroup cmdlet'ini kullanın.
Get-DistributionGroup -ResultSize UnlimitedPowerShell çıktı örneği:
Name DisplayName GroupType PrimarySmtpAddress
---- ----------- --------- ------------------
Sales Employees Sales Employees Universal Sales.Employees@m365info.com
Sales UK Sales UK Universal SalesUK@m365info.com
Sales USA Sales USA mail list Universal SalesUSAnew@m365info.comDağıtım grubu üyelerini görüntüle
Mevcut tüm dağıtım gruplarının üyelerini görüntüleyebilirsiniz.
Aşağıdaki PowerShell komut sözdizimine bakın.
Get-DistributionGroupMember -ResultSize Unlimited "Distribution Group"Aşağıdaki PowerShell komut örneğini çalıştırın.
Get-DistributionGroupMember -ResultSize Unlimited "SalesUK@m365info.com"PowerShell çıktısı üyelerin kimliğini gösterir.
Name RecipientType
---- -------------
41377e9c-dc47-46c0-b4a5-1d5bbdcb5cc5 UserMailbox Dağıtım grubu üyelerinin ayrıntılarını görüntüle
Belirli bir dağıtım grubunun üyeleri hakkında genişletilmiş bilgi almak için PowerShell cmdlet'i Get-DistributionGroupMember'ı kullanmamız gerekir. Sonucu sıralayacağız ve DisplayName, Alias ve Departman üyeleri hakkında aşağıdaki bilgileri görüntüleyeceğiz.
PowerShell komut örneği:
Get-DistributionGroupMember -ResultSize Unlimited "SalesUSA@m365info.com" | Sort -Property DisplayName | Select-Object DisplayName, Alias, DepartmentPowerShell çıktı sonuçları:
DisplayName Alias Department
----------- ----- ----------
Brenda Smith Brenda.Smith
David Kent David.Kent Sales Dağıtım grubu üyelerinin sayısını sayın
Belirli bir dağıtım grubunun sahip olduğu üye sayısını da görüntüleyebilirsiniz.
Aşağıdaki PowerShell komut sözdizimine bakın.
(Get-DistributionGroupMember -ResultSize Unlimited "Distribution Group").CountAşağıdaki PowerShell komut örneğini çalıştırın.
(Get-DistributionGroupMember -ResultSize Unlimited "SalesUSA@m365info.com").Count
PowerShell çıktısındaki üye sayısını gösterecektir.
Belirli bir kullanıcının dağıtım grubu üyeliğini alın
Ayrıca belirli bir kullanıcının kaç üyeliğe sahip olduğunu da öğrenebilirsiniz.
- İlk satıra kullanıcının Kimliğini yazın
- Aşağıdaki PowerShell betiğini çalıştırın
$User = "Brenda.Smith@m365info.com"
$UserDisplayName = (Get-User $User).Name
"The user " + $User + " is a member of the following Distribution Groups:"
foreach ($DistributionGroup in Get-DistributionGroup -ResultSize Unlimited) {
if ((Get-DistributionGroupMember $DistributionGroup.PrimarySmtpAddress | Select-Object -ExpandProperty Name) -contains $UserDisplayName) {
$DistributionGroup.PrimarySmtpAddress
}
}PowerShell çıktı sonucu hangi dağıtım gruplarına üye olduklarını gösterir.
The User Brenda.Smith@m365info.com is a member of the following Distribution Groups:
SalesEmployees@m365info.com
SalesUSA@m365info.comÖrneğimizde, Brenda kullanıcısı iki dağıtım grubunun üyesidir.
Belirli e-posta etki alanına sahip dağıtım grubu listesini görüntüle
Belirli bir etki alanının dağıtım gruplarının listesini görüntüleyin. Çok sayıda dağıtım grubunuz varsa ve bunu belirli bir alana daraltmak istiyorsanız bu kullanışlıdır.
PowerShell komut sözdizimine bakın.
Get-DistributionGroup -ResultSize Unlimited -Filter {EmailAddresses -like "*Domain Name"} | ft -Property Name, Alias, EmailAddresses -AutosizeÖrneğimizde, e-posta adresi m365info.com alan adını içeren dağıtım gruplarının bir listesini görüntülemek istiyoruz.
PowerShell komut örneğini çalıştırın.
Get-DistributionGroup -ResultSize Unlimited -Filter {EmailAddresses -like "*m365info.com*"} | ft -Property Name, Alias, EmailAddresses -AutosizePowerShell çıktısı aşağıdaki sonucu gösterir.
Name Alias EmailAddresses
---- ----- --------------
Sales Employees Sales.Employees {SMTP:Sales.Employees@m365info.com, smtp:Sales.Employees@ms365info.onmicrosoft.com}
Sales UK SalesUK {SMTP:SalesUK03@m365info.com, smtp:SalesUK@ms365info.onmicrosoft.com}
Sales USA SalesUSA {SMTP:SalesUSAnew@m365info.com, smtp:SalesUSA@m365info.com, smtp:SalesUSA@ms365info.onmicrosoft.com}Belirli bir tarih aralığındaki dağıtım gruplarını görüntüle
Belirli bir tarih, saat veya zaman aralığında oluşturulan dağıtım gruplarının listesini alabilirsiniz.
- Belirli bir zaman aralığında (son iki hafta) oluşturulan tüm yeni dağıtım gruplarına bir kullanıcı eklemek istiyoruz
- Belirli bir zaman aralığında (son iki haftadan önce) oluşturulan tüm dağıtım gruplarına kullanıcı eklemek istiyoruz.
Belirli bir dağıtım grubunun ne zaman oluşturulduğunu bilmek için WhenCreated'ı sorgulayabiliriz. Son iki hafta veya mevcut iki haftadan önceki zaman gibi belirli bir zaman aralığına ait Dağıtım Grubunu bulmak için PowerShell mantıksal operatörlerini kullanmamız gerekir.
Örneğimizde, aşağıdaki -ge ve -le operatörlerini kullanacak iki PowerShell sorgusu oluşturuyoruz ve aşağıdaki bilgileri alıyoruz:
- Son 2 hafta içinde oluşturulan dağıtım gruplarının listesini alın. Bu amaçla PowerShell operatörünü -ge (Büyük veya eşittir) kullanıyoruz.
- Son 2 haftadan önce oluşturulan dağıtım gruplarının listesini alın. Bu amaçla PowerShell operatörünü -le (Küçük veya eşit) kullanıyoruz.
İki haftalık zaman aralığını tanımlamak için Get-Date PowerShell cmdlet'lerini şu şekilde kullanacağız: (Get-Date).AddDays(-14).
Son 2 hafta içinde oluşturulan dağıtım gruplarını alın
Son 14 gün içinde oluşturulan dağıtım gruplarının listesini alın.
Aşağıdaki PowerShell örneğini çalıştırın.
Get-DistributionGroup -ResultSize Unlimited -Filter "WhenCreated -ge '$((Get-Date).AddDays(-14))'" | Format-Table DisplayName, WhenCreatedPowerShell çıktı sonucuna bakın.
DisplayName WhenCreated
----------- -----------
Sales Employees 25/08/2023 23.07.36
Sales UK 07/09/2023 11.53.47
Sales USA mail list 07/09/2023 10.00.12Son 2 haftadan önce oluşturulan dağıtım gruplarını alın
Son 14 günden önce oluşturulan dağıtım gruplarının listesini alın.
Aşağıdaki PowerShell komut örneğini çalıştırın.
Get-DistributionGroup -ResultSize Unlimited -Filter "WhenCreated -le '$((Get-Date).AddDays(-14))'" | Format-Table DisplayName, WhenCreatedPowerShell çıktı sonucu, son iki haftadan önce oluşturulan tüm dağıtım gruplarının bir listesini gösterir.
DisplayName WhenCreated
----------- -----------
Sales Employees 25/08/2023 23.07.36Belirli bir sahip tarafından yönetilen tüm dağıtım gruplarını görüntüle
Belirli bir adla yönetilen tüm dağıtım gruplarının listesini alın. Yalnızca bu belirli adın sahibi olduğu dağıtım gruplarını görüntüleyin.
Örneğimizde, sahibi Amanda kelimesine sahip olan tüm dağıtım gruplarını görüntüleyecektir.
- Yıldız işaretlerinin (*) arasına Kimlik adını yazın
- Aşağıdaki PowerShell betiğini çalıştırın
$users = Get-User -Identity *amanda*
foreach ($user in $users) {
$userPrincipalName = $user.UserPrincipalName
$displayName = $user.DisplayName
Get-DistributionGroup -ResultSize Unlimited | Where-Object { $_.ManagedBy -like "*$($user.Identity)*" } |
Select-Object DisplayName, PrimarySmtpAddress,
@{Name = 'UserPrincipalName'; Expression = { $userPrincipalName } },
@{Name = 'UserDisplayName'; Expression = { $displayName } }
}PowerShell çıktısı Amanda'ya ait tüm dağıtım gruplarını gösterir.
DisplayName PrimarySmtpAddress UserPrincipalName UserDisplayName
----------- ------------------ ----------------- ---------------
Sales Germany SalesGermany@m365info.com Amanda.Hansen@m365info.com Amanda Hansen
Sales Germany SalesGermany1@m365info.com Amanda.Hansen@m365info.com Amanda Hansen
Sales France SalesFrance@m365info.com Amanda.Morgan@m365info.com Amanda MorganTek bir dağıtım grubunun tüm sahiplerini görüntüle
Belirli bir dağıtım grubunun hangi sahiplere sahip olduğunu görüntüleyebilirsiniz.
Belirli bir dağıtım grubunun sahiplerini görüntülemek için aşağıdaki PowerShell komutunu çalıştırın.
$group = Get-DistributionGroup -ResultSize Unlimited -Filter "PrimarySmtpAddress -eq 'SalesGermany@m365info.com'"
$managedBy = $group.ManagedBy | Get-User
$managedBy | Select-Object DisplayName, IdentityPowerShell çıkışı, tüm sahiplerin Nesne Kimliğini gösterir.
DisplayName Identity
----------- --------
Brenda Smith 0f38d53f-cbe0-4844-86e9-1032a45ba31b
George Wilson 67962421-00e7-448b-b382-83b7b434e41c
Amanda Hansen 41377e9c-dc47-46c0-b4a5-1d5bbdcb5cc5
Ken Walker 12eefbb2-e5f4-4eec-bd18-df7ca2f1ee6bModeratörlü tüm dağıtım gruplarını görüntüle
Varsayılan olarak ayarlanmadığından tüm dağıtım gruplarının moderatörü yoktur. Moderatör, dağıtım grubuna gönderilen mesajları onaylayabilir veya reddedebilir.
- Moderatörlü ve moderatörsüz tüm mevcut dağıtım gruplarının listesini göster
Aşağıdaki PowerShell komut örneğini çalıştırın:
Get-DistributionGroup -ResultSize Unlimited | ft DisplayName, ModeratedByPowerShell çıktı sonucu:
DisplayName ModeratedBy
----------- -----------
Sales Employees {}
Sales UK {41377e9c-dc47-46c0-b4a5-1d5bbdcb5cc5, eec2668a-0773-4947-93ba-2223f6acfe55}
Sales USA mail list {} - Moderatörü olan tüm dağıtım gruplarının listesini göster
Aşağıdaki PowerShell komut örneğini çalıştırın.
Get-DistributionGroup -ResultSize Unlimited -Filter 'ModeratedBy -ne $null' | ft DisplayName, ManagedByPowerShell çıktısı aşağıdaki sonucu gösterir.
DisplayName ManagedBy
----------- ---------
Sales UK {41377e9c-dc47-46c0-b4a5-1d5bbdcb5cc5, eec2668a-0773-4947-93ba-2223f6acfe55}Şirket İçi Active Directory'den senkronize edilen tüm dağıtım gruplarını görüntüleyin
Aşağıdaki PowerShell komut örneğini çalıştırın.
Get-DistributionGroup -ResultSize Unlimited | Where-Object { $_.IsDirSynced -eq $true } | ft DisplayName, IsDirSyncedDağıtım grubu dağıtım yönetimi ayarlarını görüntüle
Teslim yönetimi terimi, dağıtım grubuna mesaj gönderebilen kullanıcılarla ilgilidir. İki tür gönderen vardır:
- Kimliği doğrulanmış alıcılar olarak tanımlanan Dahili gönderenler (kuruluş alıcıları)
- Kimliği doğrulanmamış alıcılar olarak tanımlanan Harici gönderenler (kuruluş dışı alıcılar)
Yeni bir dağıtım grubu oluşturduğunuzda, Yalnızca kuruluşum içindeki kişilerden gelen iletilere izin ver seçeneği etkin olur. Bu seçeneği tanımlayan parametre -RequireSenderAuthenticationEnabled'dir.
Varsayılan olarak -RequireSenderAuthenticationEnabled parametresinin değeri $True olarak ayarlanmıştır. Dağıtım grubuna yalnızca kuruluşunuzdaki kişiler ileti gönderebilir.
Ayrıca kuruluş dışındaki kişilerin de dağıtım grubuna gönderim yapmasına izin verebilirsiniz. -RequireSenderAuthenticationEnabled parametresinin değeri $False olarak ayarlanmalıdır.
Harici gönderenleri etkinleştiren veya devre dışı bırakan tüm dağıtım gruplarının bir listesini görüntüleyeceğiz.
PowerShell komut örneğini çalıştırın.
Get-DistributionGroup -ResultSize Unlimited | ft DisplayName, RequireSenderAuthenticationEnabledPowerShell çıktı sonucu.
DisplayName RequireSenderAuthenticationEnabled
----------- ----------------------------------
Mail security False
Sales Employees False
Sales France True
Sales Germany True
Sales Norway True
Sales Spain True
Sales Sweden True
Sales UK False
Sales USA mail list FalseHarici alıcılardan e-posta kabul eden dağıtım gruplarını görüntüleyin
Yalnızca harici alıcıların e-posta göndermesini kabul eden dağıtım gruplarının listesini görüntüleyin.
PowerShell komut örneğini çalıştırın.
Get-DistributionGroup -ResultSize Unlimited | Where-Object { $_.RequireSenderAuthenticationEnabled -eq $True } | ft DisplayName, RequireSenderAuthenticationEnabledAşağıdaki PowerShell çıktı sonucuna bakın.
DisplayName RequireSenderAuthenticationEnabled
----------- ----------------------------------
Sales UK TrueHarici alıcılardan gelen e-postaları kabul etmeyen dağıtım gruplarını görüntüle
Yalnızca kuruluş dışındaki kişilerin (harici alıcılar) bu gruba e-posta göndermesine izin vermeyen dağıtım gruplarının listesini göstereceğiz.
Aşağıdaki PowerShell komutunu çalıştırın:
Get-DistributionGroup -ResultSize Unlimited | Where-Object { $_.RequireSenderAuthenticationEnabled -eq $False } | ft DisplayName, RequireSenderAuthenticationEnabledPowerShell çıktı sonucu:
DisplayName RequireSenderAuthenticationEnabled
----------- ----------------------------------
Sales Employees False
Sales USA mail list FalseÜyeleri içeren dağıtım grubu listesini CSV'ye aktar
PowerShell çıktı sonuçları olarak görüntülenen tüm bilgilerin nasıl dışa aktarılacağını size göstereceğiz. PowerShell çıktısını şu dosya formatlarında dışa aktarabilirsiniz: Metin, CSV, HTML ve XML.
PowerShell komut çıktısını CSV (Virgülle Ayrılmış Değer) dosya biçimine aktarmak için aşağıdaki gibi ek parametreler ekleyebiliriz:
- -NoTypeInformation: PowerShell'in CSV dosyasına gereksiz bilgiler eklemesini engeller
- -UTF8 kodlaması: Çince veya Arapça gibi İngilizce olmayan tüm karakterleri dışa aktarabilir
Verileri dışa aktarmak için bir yol eklemeniz gerekir; bu, belirli bir klasör (temp) oluşturmanız ve onu (C:) sürücüsüne kaydetmeniz gerektiği anlamına gelir. Hiçbir PowerShell komutu yolda belirtilen belirli bir klasörü oluşturmaz.
Bu ayarlandıktan sonra, dağıtım grubu listesi bilgilerinin çeşitli dosya türlerine nasıl aktarılacağını size göstereceğiz.
- Bilgileri CSV dosyasına aktarın PowerShell komut örneği:
Get-DistributionGroup -ResultSize Unlimited | Export-CSV "C:\temp\DistributionGroups.csv" -NoTypeInformation -Encoding UTF8- Bilgileri Metin dosyasına aktarın PowerShell komut örneği:
Get-DistributionGroup -ResultSize Unlimited | Out-File "C:\temp\DistributionGroups.txt"- Bilgileri HTML dosyasına aktarın PowerShell komut örneği:
Get-DistributionGroup -ResultSize Unlimited | ConvertTo-Html | Out-File "C:\temp\DistributionGroups.html"Üyeler dahil tek dağıtım grubu listesini CSV'ye aktarın
Belirli bir dağıtım grubunun tüm üyelerinin bilgilerini dışa aktarabilirsiniz.
Örneğimizde Sales UK dağıtım grubunun tüm üyelerini dışa aktarmak istiyoruz.
Get-DistributionGroupMember -ResultSize Unlimited -Identity "Sales UK" | Select-Object DisplayName, PrimarySmtpAddress, ExternalEmailAddress, Alias | Export-Csv "C:\temp\DistributionGroupMembers.csv" -NoTypeInformation -Encoding UTF8CSV dosyasını C:\temp klasörüne aktaracaktır. Sonuçları görmek için CSV dosyasını Microsoft Excel ile açın.
Aşağıdaki resimde Sales UK dağıtım grubunun tüm grup üyelerini (kişiler dahil) içeren bir CSV dosyası örneği gösterilmektedir.
Üyeler dahil tüm dağıtım gruplarının listesini CSV'ye aktarın
Tüm dağıtım grubu üyelerinin listesini tek bir CSV dosyasına aktarabilirsiniz.
PowerShell betiğini çalıştırın.
$Groups = Get-DistributionGroup -ResultSize Unlimited
# Initialize an array to store the data
$data = @()
foreach ($Group in $Groups) {
$Members = Get-DistributionGroupMember -ResultSize Unlimited -Identity $Group.PrimarySmtpAddress
foreach ($Member in $Members) {
if ($Member.PrimarySmtpAddress) {
$Recipient = Get-Recipient -Identity $Member.PrimarySmtpAddress
$data += [PSCustomObject]@{
GroupName = $Group.DisplayName
GroupPrimarySmtpAddress = $Group.PrimarySmtpAddress
MemberDisplayName = $Member.DisplayName
MemberPrimarySmtpAddress = $Member.PrimarySmtpAddress
RecipientType = $Recipient.RecipientType
MemberAlias = $Recipient.Alias
}
} else {
$data += [PSCustomObject]@{
GroupName = $Group.DisplayName
GroupPrimarySmtpAddress = $Group.PrimarySmtpAddress
MemberDisplayName = $Member.DisplayName
MemberPrimarySmtpAddress = "-"
RecipientType = "-"
MemberAlias = "-"
}
}
}
}
# Export the data to a CSV file
$data | Export-Csv -Path "C:\temp\AllDistributionGroupMembers.csv" -NoTypeInformation -Encoding UTF8CSV dosyasını C:\temp klasörüne aktaracaktır. Sonuçları görmek için CSV dosyasını Microsoft Excel ile açın.
Nihai sonuç, üyeleri ve kuruluşunuzdaki kişiler de dahil olmak üzere tüm dağıtım gruplarının bir listesini gösterir.
Devamını oku: Microsoft 365 posta kutusunu PST dosyasına aktarın »
Çözüm
PowerShell ile dağıtım gruplarını ve üyelerini nasıl dışarı aktaracağınızı öğrendiniz. Üyeleri de dahil olmak üzere tüm dağıtım gruplarının ayrıntılı bir listesini alın ve bunu bir CSV dosyasına aktarın. PowerShell ile tüm dağıtım grupları hakkında kendi ayrıntılı raporunuzu özelleştirebilir ve oluşturabilirsiniz.
Bu makaleyi beğendiniz mi? Ayrıca PowerShell ile Microsoft 365 posta kutusu boyutu raporunu dışarı aktarmayı da beğenebilirsiniz. Bizi takip etmeyi ve bu yazımızı paylaşmayı unutmayın.



