Stamp Language
VBScript und 64Bit !
Viele 32bit COM-Objekte lassen sich auf einem 64bit System nur
instanziieren, wenn die 32bit Version von CSCRIPT/WSCRIPT genutzt wird,
welcher unter C:\Windows\SysWOW64\cscript.exe liegt.
Diese Skript nutzt CDO und kann damit nur die Exchange Standardordner umbenennen. Neuere Ordner wie z.B.: Synchronisationsfehler, Entwürfe etc. sind per CDO nicht einfach erreichbar.
Seit Exchange 2010 SP2 ist
es direkt per PowerShell möglich die
Ordnersprachen im Postfach anzupassen:
set-mailboxregionalconfiguration `
-identity username@domain.tld `
-language
De-de `
-Localizedefaultfoldername:$true
Set-MailboxRegionalConfiguration
http://technet.microsoft.com/de-de/library/dd351103.aspx
Als Administrator ist das Leben nicht einfach, besonders wenn sich Benutzer über scheinbare Kleinigkeiten beschweren wie z.B. einer "Inbox" statt eines Posteingangs. Exchange entscheidet nun mal anhand der Sprache des ersten Clientzugriffs über die Postfachordnernamen. Und Zudem verhindern Outlook als auch OWA eine Umbenennung durch den Benutzer. Was aber so trivial scheint, kann ganz schön nervig sein, da es meist mehrere Personen betrifft und einige "Prozessanwendungen" und Makros empfindlich stören kann. Leider nutzen ja nicht alle Entwickler die Funktionen, um die Default-Folder mit einer Konstanten anzusprechen, sondern suchen nach den Namen.
Aber auch ohne solche "Druckmittel" macht es natürlich keinen guten Eindruck, wenn die Ordner nicht in der typischen Landesprache präsentiert werden. Es gibt von Microsoft und Drittherstellern nun gleich mehrere Tools und Programme, um Ordner umzubenennen. Das fängt damit an, einen alten Exchange 5.0 Client zu installieren oder EXMERGE zu verwenden, um die Ordnernamen zu ändern. Dann gibt es jede Menge kompilierte Programme (Teils kostenfrei, teils Shareware oder kommerziell). Fakt ist, dass auch der CDO ein Ordner problemlos umbenannt werden kann.
Outlook XP und höher
Wenn Sie nur ein Postfach mit falschen Ordnernamen haben, dann starten
Sie Outlook einfach mit der Option:
Outlook.exe /resetfoldernames
Genau das zeige ich mit dieser Beispielanwendung: Sie starten das Skript in einer CMD-Box mit CSCRIPT unter übergeben einfach den Namen des Servers und den Alias oder die SMTP-Adresse der Mailbox. Basierend auf diesen beiden Werten wird eine Verbindung zum Server per CDO aufgebaut und die Ordner anhand der vordefinierten Systemkonstanten gesucht und der Name geändert, wenn dies erforderlich sein sollte.
Der Code ist absichtlich "einfach" und verständlich gehalten. Es ist natürlich kein Problem, um die innere Funktion eine Schleife für alle Postfächer zu programmieren. Auch werden Ausgaben einfach auf den Bildschirm geschrieben. Auch hier könnte man alle Aktionen ausführlich im Eventlog oder anderer Stelle revisionssicher protokollieren. Man könnte sogar das Skript über einen Eventsink ansteuern, wenn ein neues Postfach falsch angelegt wird. Aber das sind alles optionale Erweiterungen, die von der Hauptfunktion ablenken würden. So ist es einfach ein kleines und leicht verständliches Beispiel, welches für einen angegebenen Benutzer die Ordner ändert.
Leider gibt es in CDO keine Konstanten für die beiden Ordner "Entwürfe" und "Junk-E-Mail", so dass diese nicht ganz so einfach zu erreichen sind. Sicher kann man die erweiterten MAPI-Properties auswerten, die auch Outlook nutzt, aber CDO 1.21 ist eben "vor" der Outlook 2003-Zeit definiert worden. Nicht alle Funktionen von Outlook sind daher auch für CDO erreichbar.
Download und Installation
Wie bei VBScript üblich gibt es keine große Installation. Laden Sie sich das Skript von der Webseite herunter und speichern Sie diese als VBS-Datei auf einem Server, auf dem auch die CDO installiert ist. Das ist auf jedem Exchange 2000/2003 Server per Default der Fall. Bei Exchange 2007 muss man die CDO nachinstallieren oder eben von einem Arbeitsplatz aus die Änderungen ausführen.
Weiterhin muss der ausführende Benutzer natürlich die Berechtigungen haben, alle Postfächer zu öffnen und auch zu ändern. Details hierzu finden Sie auf Mailboxrechte
Aufruf und Ausgabe
Der Start des Programm stellt sich dann sehr einfach dar.
cscript StampLanguage.1.0.vbs /server:servername /Mailbox:<Alias oder SMTP-Adresse>
Wichtig ist, dass ein gültiger Exchange Server angegeben wird und der Mailboxalias bzw. die SMTP-Adresse eindeutig ist. StampLanguage gibt alle Tätigkeiten auf der Konsole aus. Eine gesonderte Protokollierung in Dateien erfolgt nicht. Auf diesem Bild sehen Sie, dass der Posteingang anscheinend "falsch" benannt war und in diesem Lauf korrigiert wurde.
Es ist problemlos, das Programm mehrfach zu starten. Sie sollten in den Folgemeldungen aber dann sehen, dass nichts mehr geändert wird. Wenn Sie mehrere Postfächer auf einen Schwung bearbeiten wollen, können Sie das Skript einfach aus einer CMD-Datei und einer For-Schleife aufrufen. für etwas ambitionierte Administratoren ist es sicher kein Problem, aus Codeteilen von Feiertage sich ein Skript für alle Postfächer zusammen zu kopieren.
Einschränkungen
Das Skript ändert wirklich nur die Namen der Ordner. Es korrigiert nicht die Locale-ID der Mailbox, die für andere Einstellungen maßgeblich ist. Es ändert auch nicht die Sprache, die ein Anwender per OWA angezeigt bekommt. Mit Exchange 2007 gibt es über die PowerShell weitere Optionen, um die Sprachen den Mailbox zu konfigurieren
Set-Mailbox -Identity Username -languages "de-DE"
Details dazu finden Sie Online Hilfe und auf OWA 2010
Offen
Insofern steht für die nächste Version, so ich noch dazu komme, die Erweiterung an, um folgende Dinge gleich mit zu korrigieren:
- Setzen der Exchange 2007 Sprache im Feld msExchCulture
Entweder per PowerShell oder durch direkte Änderung im Active Directory - Ändern der "Postfachbeschreibung"
Vermutlich per MAPI - Ändern der Local_ID im Postfach
Mittels der Funktion SetLocaleIDs Method (Session Object)
http://msdn2.microsoft.com/en-us/library/ms527443.aspx
Weitere Links
- OWA 2010
- Locale-ID
- Fakten: Outlook Client
- MAPI/CDO
- MBReport
- Mailboxrechte
- Exchange 2007 Hife: Set-Mailbox
http://technet.microsoft.com/en-us/library/bb123981(EXCHG.80).aspx - Language setup für a mailbox with Exchange Server 2007
http://blogs.technet.com/b/exchange/archive/2009/01/28/450532.aspx - 831363 You cannot rename default folders by using the Outlook 2003 object model
- 233040 XCLN: Internet Message Access Protocol Clients Can Rename, Move, or Delete Some Outlook Special Folders
- 188856 XCLN: Names of Mailbox Folders Appear in Different Languages
- 197180 OL2000: Additional Command-Line Switches
- 230273 XWEB:OWA Creates English Special Folders (Contacts, Calendar...) During First Logon"
- Exchange Server 2003 SetLocaleIDs Method (Session Object)
http://msdn.microsoft.com/en-us/library/ms527443(EXCHG.10).aspx - Exchange 2007 Language Support
http://technet.microsoft.com/en-us/library/bb123979.aspx - Language Support für Client Applications
http://technet.microsoft.com/en-us/library/bb124982.aspx - How to Configure
Language Settings für Outlook Web Access
http://technet.microsoft.com/en-us/library/aa997435.aspx - How to Change the
Languages für a User Mailbox
http://technet.microsoft.com/en-us/library/bb310757.aspx - Exchange Server
2007 internationalized console GUI layout of name and address information
http://blogs.technet.com/b/exchange/archive/2007/02/01/432722.aspx - The address book
function in Exchange 2007 is broken when an Exchange OWA client and a Windows
Server 2003-based domain controller do not have the same locale setting
http://support.microsoft.com/kb/919166/en-us