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
http://faq-o-matic.net/?p=1659