Neue Exchange-Programmierschnittstellen

Monad-Skripts

Die vielleicht wichtigste Änderung innerhalb der kommenden Systemsoftware-Versionen, dürfte für Administratoren die Einführung der neuen Verwaltungsumgebung mit Codenamen „Monad“ sein. In diesem Zusammenhang wird auch oft die neue Kommandozeile Microsoft Shell (MSH) genannt. Im Grunde genommen handelt es sich

hierbei allerdings um zwei verschiedene Dinge. Monad ist eine objektorientierte Funktionsbibliothek, die grob der WMI-Umgebung entspricht, die sie ersetzen wird. Die neue Kommandozeile wird als eigenes Programm darauf aufsetzen. Sie entspricht damit ungefähr der Windows Scripting-Umgebung WSH.

Listing 1a: Abfragen von Postfachstatistiken mit WMI
Set listExchange_Mailboxes = _
GetObject("winmgmts:{impersonationLevel=impersonate}!\\COMPUTERNAME\ROOT\MicrosoftExchangeV2").InstancesOf("Exchange_Mailbox")
For Each objExchange_Mailbox in listExchange_Mailboxes
WScript.echo "AssocContentCount =” + _
objExchange_Mailbox.AssocContentCount
...
WScript.echo "TotalItems =” + _
objExchange_Mailbox.TotalItems
Next

Listing 1b: Abfragen von Postfachstatistiken mit Monad
get-mailboxstatistics -server $servername

WSH ist nur eine mögliche Art und Weise, auf die WMI-Funktionen zuzugreifen. Analog ist auch Monad unabhängig von MSH. Monad-Anwendungen lassen sich auch mit allen .NET-Programmiersprachen erstellen. C# und Visual Basic gehören hier genauso dazu wie Perl oder Python. Insbesondere wird auch die Microsoft Management Console (MMC) ihre Verwaltungsaufgaben über neue Snap-Ins mittels Monad vollziehen können. Auch der System-Manager von Exchange 12 wird voraussichtlich auf Monad basieren.

Genau wie bei WMI erfolgt auch bei Monad die Einbindung der verwaltbaren Systemkomponenten über Treiber und so genannte Namespaces. Die Funktionen, die Monad für diese Komponenten bereitstellt, zum Beispiel new-mailbox, werden auch als „Cmdlets“ bezeichnet.

Der Hauptgrund für die Entwicklung von Monad dürfte die Bereitstellung eines .NET-basierten Gegenstücks zur WMI-Technologie gewesen sein. WMI beruht auf COM-Objekten und damit auf Unmanaged Code, der nicht von den Vorteilen der .NET-Laufzeitumgebung profitiert. Die Struktur der Systemarchitektur wurde bei Monad vom Vorgänger WMI wie gezeigt übernommen. Gerade bei der Erstellung von Skripts in der MSHKommandozeile zeigt sich aber, dass Microsoft viel Mühe darauf verwendet hat, die Schnittstelle zu vereinfachen. Die Komplexität, die viele Anwender von WMI abgeschreckt hat, ist deutlich verringert worden.

Listing 2a: Erstellen eines Postfachs mit VBScript
objMailbox As CDOEXM.IMailboxStore
Set objMailbox = _
GetObject("LDAP://..,CN=users," + DomainName)
objMailbox.CreateMailbox _
"LDAP://...,CN=First Storage Group,..."

Listing 2b: Erstellen eines Postfachs mit MSH
new-mailbox –id domainSer –database
“First Storage Group\Private MDB”

Während beispielsweise zur Abfrage der wichtigsten Informationen der vorhandenen Exchange-Postfächer ein komplizierter Aufruf eines WMI-Objekts nötig war, bei dem die einzelnen Informationen explizit abgefragt werden mussten, reicht bei MSH ein Befehl mit Angabe des Servers (Listing 1a und 1b).

Die Anlage eines Postfachs demonstriert, wie Monad die parallele Verwendung mehrerer Schnittstellen unnötig macht. Wenn dieser Vorgang heute mit VBScript programmiert wird, müssen in den wenigen Zeilen CDOExM, ADSI und LDAP miteinander kombiniert werden. In Monad reicht wiederum eine Zeile. In dieser müssen nur noch die unbedingt notwendigen Informationen übergeben werden, nämlich die Postfach-Datenbank, auf der das Postfach angelegt werden soll, und der Benutzer, mit dem das Postfach verbunden wird. Die komplexe X.500-Adressierung entfällt dabei.

Es sollte aber nicht übersehen werden, dass die heute von Microsoft präsentierten Beispiele durchaus mit der Absicht ausgewählt sind, die neuen Technologien in positivem Licht erscheinen zu lassen. Wenn beispielsweise für ein Überwachungsskript bestimmte Eigenschaften eines Postfachs abgefragt werden sollen, dann müssen diese Angaben im Zweifelsfall als Parameter mit übergeben werden. Ein einzelner Befehl mit verschiedenen Kommandozeilenparametern und mehr als 100 Zeichen Länge ist aber genauso unübersichtlich wie ein strukturiertes WSH-Skript mit 15 oder 20 Befehlszeilen. Hier muss sich das Gespann Monad und MSH erst noch im Alltagsbetrieb beweisen.

Deempasized API

CDO 1.2.1
CDOEx
CDOSYS
ExOLEDB
WebDAV, OWA URL-Aufrufe
Store Events