Exchange Server Distribution Group Rapor

Exchange Server ortamlarında, dağıtım grupları için üye karşılaştırması yapmak veya kontrol etmek amacıyla raporlama ihtiyacı duyulabilir. Exchange Admin Center (EAC) üzerinden bu tür detaylı raporlar oluşturulamadığı için, genellikle üçüncü parti araçlar kullanılmakta veya PowerShell script’leri tercih edilmektedir.

PowerShell Kullanarak Exchange Server Dağıtım Gruplarının Raporlanması

Hazırladığım PowerShell script’i, belirlenen bir dağıtım grubu için veya ortamda aktif olarak çalışan tüm dağıtım grupları için detaylı raporlar üretmektedir. Bu script, üyelerin detaylarını içeren bir CSV dosyası olarak kaydetmektedir.

Exchange Server Distribution Group Rapor Scriptinin Kullanılabilirliği

Bu PowerShell script’i, Exchange Server’da aktif çalışan dağıtım grupları (DL) içerisindeki üyeleri belirtilen CSV dosyasına kaydetmek için tasarlanmıştır. Kullanıcıya dağıtım grubu adını girmesi için bir seçenek sunar ve grup adı girilmediğinde, ortamda aktif olan tüm dağıtım gruplarının raporunu verir.

  • Function Green: PowerShell çıktılarını yeşil renkte yazdırır.
  • Dağıtım Grubu Seçimi: Kullanıcıdan bir dağıtım grubu adı alır. Boş bırakılırsa tüm grupları listeler.
  • Rapor Oluşturma: Her grup ve üye için belirtilen özelliklerle bir liste oluşturur ve bunları bir CSV dosyasına kaydeder.
  • Dosya Kontrolü: Rapor dosyasının başarıyla oluşturulup oluşturulmadığını kontrol eder.
  • Rapor Oluşturma: Her bir grup ve onun üyeleri için, üyelerin adı, e-posta adresi ve alıcı tipi bilgileri toplanır.
  • CSV’ye Dışa Aktarma: Toplanan bilgiler, belirtilen yolda bir CSV dosyası olarak kaydedilir. Bu dosya, grup yapılarının analizi ve arşivlenmesi için kullanılabilir.

Exchange Server Dağıtım Grubu Raporlama Scriptine Github üzerinden erişebilirsiniz.

  • <a href="https://github.com/cengizyilmaz1/ExchangeServerDistributionListMemberReport/blob/main/DistributionListMemberReport”>ExchangeServerDistributionListMemberReport/DistributionListMemberReport at main · cengizyilmaz1/ExchangeServerDistributionListMemberReport (github.com)
<#
#################################################################################################################
# Yayınlanma Tarihi: 08.12.2022
# Version: 1.0
# Yazar: Cengiz YILMAZ
# MCT, https://cozumpark.com/author/cengizyilmaz
# https://cengizyilmaz.com.tr
# https://msgurusu.com (Azure Blog and News)
# E-posta: [email protected]
##################################################################################################################
.NOTES
# Exchange Server'da aktif çalışan DL içerisindeki üyeleri CSV olarak kaydetmektedir. 
# Bir DL hesabı belirtmezseniz ortamda aktif çalışan tüm DL hesaplarını rapor vermektedir.
##################################################################################################################

function Green
{
    process { Write-Host $_ -ForegroundColor Green }
}

# Get distribution group name from user
$groupName = Read-Host "Enter distribution group name (leave blank for all groups)"

# If group name is empty, get all groups
if ($groupName -eq "")
{
    $groups = Get-DistributionGroup -ResultSize Unlimited
}
else
{
    # Get specified group
    $groups = Get-DistributionGroup -Identity $groupName
    
    # If group does not exist, show error message and exit
    if ($groups -eq $null)
    {
        Write-Host "Distribution group does not exist" -ForegroundColor Red
        return
    }
}

# Create report file
$report = @()

# This part will list group memberships and some attributes of members.
$groups | ForEach-Object {
    $group = $_
    Write-Host "Group: $($group.DisplayName)"
    
    Get-DistributionGroupMember -Identity $group.Name -ResultSize Unlimited | ForEach-Object {
        Write-Host " Member: $($_.Name)"
        Write-Host " EmailAddress: $($_.PrimarySMTPAddress)"
        Write-Host " RecipientType: $($_.RecipientType)"
        Write-Host ""
        
        $report += New-Object PSObject -Property @{
            Group = $group.DisplayName
            Member = $_.Name
            EmailAddress = $_.PrimarySMTPAddress
            RecipientType = $_.RecipientType
        }
    }
}

# Export report to CSV file
$report | Export-Csv "C:DLMember.csv" -NoTypeInformation -Encoding UTF8

# Check if the export file has been created successfully.
$Folder = "C:DLMember.csv"
if (Test-Path -Path $Folder) {
    "Success C:DLMember.csv"| Green
} else {
    "Fail."
}

Benzer Yazilar – Exchange Server Distribution Group Rapor

Yorum yapın