Exchange Online Adressrichtlinie

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
 



Kommentare sind geschlossen