von AutorNils Kaczenski veröffentlicht am20. August 2009, 11:25 Uhr Kurzlink http://faq-o-matic.net/?p=1659
Kategorie Kategorie: Exchange,Migration

Im Unterschied zu den Vorgängerversionen erlaubt Exchange 2007 keine Leerzeichen in den Alias-Namen von Mailboxen, Kontakten und Verteilergruppen. Der Grund liegt darin, dass Exchange 2007 standardmäßig aus dem Alias SMTP-Adressen erzeugen will, in denen Leerzeichen nicht auftauchen dürfen. Damit sind auch einige andere Zeichen nicht erlaubt, wobei Exchange bei manchen anderen Zeichen selbstständig eine Ersetzung in den SMTP-Adressen ausführt.

Glücklicherweise lassen vorhandene Alias-Einträge sich gesammelt mit einem PowerShell-Kommando bereinigen. Die nötige Syntax findet sich hier:

[How to Remove Spaces From Recipient Aliases by Using the Exchange Management Shell]
http://technet.microsoft.com/en-us/library/bb851499.aspx

Zu dem Artikel sind aber ein paar Ergänzungen nötig:

  • Die dort genannte Syntax gibt immer nur die ersten 1000 Einträge zurück. In größeren Umgebungen sollte man hinter “Get-Mailbox” also noch den Parameter “-ResultSize” anhängen. Ist die Umgebung nicht “riesig”, sondern nur “groß”, kann man als Wert dann “unlimited” angeben, sonst eben einen passenden Zahlenwert:
    Get-Mailbox –ResultSize unlimited | Where {$_.Alias -like "* *"} | ForEach-Object {Set-Mailbox $_.Name -Alias:($_.Alias -Replace " ","")}
  • Statt das Leerzeichen einfach zu entfernen, kann man es natürlich durch ein gültiges Zeichen ersetzen. Dazu ändert man ganz am Ende die Replace-Angabe, für einen Unterstrich etwa so: -Alias:($_.Alias -Replace " ","_")
  • Es empfiehlt sich, vor dem Replace erst eine Suche auszuführen. Dazu lässt man den Teil mit “ForEach-Object” weg.
  • Natürlich ist auch eine vorherige Datensicherung des AD eine sehr gute Idee.
  • PowerShell meldet bei jeder Ausführung für jeden ungültigen Alias eine Warnung. Das ist normal, wenn auch unhandlich.
  • Aus irgendeinem Grund erfasst in größeren Netzwerken das Kommando nicht gleich alle Objekte, die bearbeitet werden müssen. Daher ist es sinnvoll, nach der Ausführung eine erneute Suche (ohne ForEach-Object) auszuführen und das Replace ggf. zu wiederholen.
  • Manche Objekte will das Kommando nicht konvertieren. Diese sollte man dann per Hand korrigieren.
  • Und: Nur die Mailboxen zu bearbeiten, reicht natürlich nicht aus. Um auch Kontakte und Verteilergruppen zu erfassen, variiert man das Kommando, indem man jeweils “Get-Mailbox” und “Set-Mailbox” durch die passenden Cmdlets ersetzt:
    • Get-/Set-MailContact
    • Get-/Set-DistributionGroup

Verwandte Beiträge:

  1. Exchange-2007-Migration: Standardadresse beibehalten
    Migriert man von Exchange 2003 nach Exchange 2007, so kann in bestimmten Situationen folgender Effekt auftreten: Bei allen verschobenen Mailboxen...
  2. Migration von Exchange 2003 nach Exchange 2007
    Es gibt mehrere Möglichkeiten, auf die aktuelle Version von Exchange zu migrieren. Eine davon ist die "IntraOrg Migration", also die...
  3. Exchange 2010: Getrennte Mailboxen auflisten
    Anders als in der Onlinehilfe beschrieben, tauchen getrennte Mailboxen oft nicht von selbst im Zweig “Getrenntes Postfach” der Verwaltungskonsole auf....
  4. Exchange 2007: Installation auf Windows Server 2008 vorbereiten
    Um Exchange Server 2007 auf Windows Server 2008 zu installieren, ist ein Installationsmedium mit (mindestens) dem integrierten Service Pack 1...
  5. Exchange 2010: Berechtigungen innerhalb von Postfächern verwalten
    Kaum bekannt ist, dass Exchange Server 2010 nun endlich eine zentrale Möglichkeit mitbringt, Zugriffsberechtigungen innerhalb von Postfächern zu verwalten. In...