Exchange Server In Umgebungen kann eine Berichterstellung erforderlich sein, um Mitglieder für Verteilergruppen zu vergleichen oder zu steuern. Exchange Admin Center (EAC) Da es nicht möglich ist, solch detaillierte Berichte zu erstellen, werden in der Regel Tools von Drittanbietern verwendet oder PowerShell-Skripte bevorzugt.
Melden von Exchange Server-Verteilergruppen mithilfe von PowerShell
Das von mir vorbereitete PowerShell-Skript erstellt detaillierte Berichte für eine bestimmte Verteilergruppe oder für alle Verteilergruppen, die aktiv in der Umgebung ausgeführt werden. Dieses Skript speichert es als CSV-Datei mit den Mitgliederdetails.
Verfügbarkeit des Berichtsskripts für Exchange Server-Verteilergruppen
Dieses PowerShell-Skript dient zum Speichern von Mitgliedern in Verteilergruppen (DL), die in Exchange Server aktiv sind, in der angegebenen CSV-Datei. Es bietet dem Benutzer die Möglichkeit, den Namen der Verteilergruppe einzugeben. Wenn der Gruppenname nicht eingegeben wird, werden alle in der Umgebung aktiven Verteilergruppen gemeldet.
- Funktion Grün: PowerShell druckt seine Ausgabe in Grün.
- Auswahl der Verteilergruppe: Ruft einen Verteilergruppennamen vom Benutzer ab. Wenn es leer bleibt, werden alle Gruppen aufgelistet.
- Berichtserstellung: Erstellt eine Liste mit den angegebenen Eigenschaften für jede Gruppe und jedes Mitglied und speichert sie in einer CSV-Datei.
- Dateikontrolle: Überprüft, ob die Berichtsdatei erfolgreich erstellt wurde.
- Erstellen eines Berichts: Für jede Gruppe und ihre Mitglieder werden der Name, die E-Mail-Adresse und der Empfängertyp der Mitglieder erfasst.
- Als CSV exportieren: Die gesammelten Informationen werden als CSV-Datei im angegebenen Pfad gespeichert. Diese Datei kann zur Analyse und Archivierung von Gruppenstrukturen verwendet werden.
Sie können auf Github auf das Exchange Server Distribution Group Reporting Script zugreifen.
- <a href="https://github.com/cengizyilmaz1/ExchangeServerDistributionListMemberReport/blob/main/DistributionListMemberReport”>ExchangeServerDistributionListMemberReport/DistributionListMemberReport bei 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."
}