In Exchange Online ist es nicht möglich eine Adressrichtlinie wie bei einem onprem-Exchange
anzuwenden.
Eine Möglichkeit wäre es, die SMTP-Adressen bzw. die Aliase via Powershell-Script zu ändern bzw. zu ergänzen.
Hier ein Beispiel für das Formt Vorname.Nachname@yourdomain.suffix inkl. Aktualisierung
aller Postfächer der letzten 24h.
#Richtlinie für die neuen Benutzer der letzten 24h
#Verbindung zu Exchange Online herstellen
#$Domain anpassen
#Script bei Intune oder Azure-Automation als geplanten Task ausführen lassen (besser Azure-Automation!)
Connect-ExchangeOnline -UserPrincipalName admin@deinedomain.de
# === KONFIGURATION ===
$domain = "firma.de"
$addShortAlias = $true
$addFirstAlias = $true
$cutoffDate = (Get-Date).AddHours(-24) # Nur Benutzer, die in den letzten 24h erstellt wurden
Write-Host "Starte Verarbeitung von Benutzern, die seit $($cutoffDate) erstellt wurden..." -ForegroundColor Cyan
# Alle Mailboxen abrufen und auf Erstellungsdatum filtern
$mailboxes = Get-Mailbox -RecipientTypeDetails UserMailbox -ResultSize Unlimited |
Where-Object { $_.WhenCreatedUTC -gt $cutoffDate }
if (-not $mailboxes) {
Write-Host "Keine neuen Benutzer in den letzten 24 Stunden gefunden." -ForegroundColor Yellow
Disconnect-ExchangeOnline -Confirm:$false
return
}
foreach ($mbx in $mailboxes) {
$first = $mbx.FirstName
$last = $mbx.LastName
# Wenn Vor- oder Nachname fehlt → aus DisplayName ableiten
if ([string]::IsNullOrEmpty($first) -or [string]::IsNullOrEmpty($last)) {
if ($mbx.DisplayName -match ' ') {
$splitName = $mbx.DisplayName -split ' '
$first = $splitName[0]
$last = $splitName[-1]
Write-Host "Name aus DisplayName erkannt: $($mbx.DisplayName) → $first $last" -ForegroundColor Yellow
} else {
Write-Host "Überspringe $($mbx.DisplayName) – kein vollständiger Name." -ForegroundColor Red
continue
}
}
# Hauptadresse und optionale Aliasse
$primary = "$($first.ToLower()).$($last.ToLower())@$domain"
$aliases = @()
if ($addShortAlias) { $aliases += "$($first.Substring(0,1).ToLower())$($last.ToLower())@$domain" }
if ($addFirstAlias) { $aliases += "$($first.ToLower())@$domain" }
# Aktuelle Adressen prüfen
$currentEmails = $mbx.EmailAddresses
if ($currentEmails -notcontains "SMTP:$primary") {
Write-Host "Setze primäre Adresse für $($mbx.DisplayName): $primary" -ForegroundColor Cyan
$newEmails = @("SMTP:$primary")
$newEmails += $currentEmails | Where-Object { $_ -notmatch '^SMTP:' }
foreach ($alias in $aliases) {
if ($newEmails -notcontains "smtp:$alias") {
$newEmails += "smtp:$alias"
}
}
Set-Mailbox -Identity $mbx.Identity -EmailAddresses $newEmails
} else {
Write-Host "Benutzer $($mbx.DisplayName) hat bereits die korrekte primäre Adresse." -ForegroundColor Green
}
}
Disconnect-ExchangeOnline -Confirm:$false