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-ExchangeOnline

Dağı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 Unlimited

PowerShell çı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.com

Dağı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, Department

PowerShell çı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").Count

Aş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.

  1. İlk satıra kullanıcının Kimliğini yazın
  2. 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 -Autosize

PowerShell çı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.

  1. Belirli bir zaman aralığında (son iki hafta) oluşturulan tüm yeni dağıtım gruplarına bir kullanıcı eklemek istiyoruz
  2. 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, WhenCreated

PowerShell çı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.12

Son 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, WhenCreated

PowerShell çı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.36

Belirli 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 Morgan

Tek 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, Identity

PowerShell çı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-df7ca2f1ee6b

Moderatö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.

  1. 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, ModeratedBy

PowerShell çıktı sonucu:

DisplayName          ModeratedBy                                                                 
-----------          -----------                                                                 
Sales Employees      {}                                                                          
Sales UK             {41377e9c-dc47-46c0-b4a5-1d5bbdcb5cc5, eec2668a-0773-4947-93ba-2223f6acfe55}
Sales USA mail list  {}                                                                          
  1. 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, ManagedBy

PowerShell çı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, IsDirSynced

Dağı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, RequireSenderAuthenticationEnabled

PowerShell çı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                               False

Harici 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, RequireSenderAuthenticationEnabled

Aşağıdaki PowerShell çıktı sonucuna bakın.

DisplayName RequireSenderAuthenticationEnabled
----------- ----------------------------------
Sales UK                                  True

Harici 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, RequireSenderAuthenticationEnabled

PowerShell çı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.

  1. Bilgileri CSV dosyasına aktarın PowerShell komut örneği:
Get-DistributionGroup -ResultSize Unlimited | Export-CSV "C:\temp\DistributionGroups.csv" -NoTypeInformation -Encoding UTF8
  1. Bilgileri Metin dosyasına aktarın PowerShell komut örneği:
Get-DistributionGroup -ResultSize Unlimited | Out-File "C:\temp\DistributionGroups.txt"
  1. 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 UTF8

CSV 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 UTF8

CSV 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.

İlgili makaleler