Administration in Exchange 2007

Die Management Shell

Mit der PowerShell macht Microsoft den lange überfälligen Schritt, eine vernünftige Kommandozeilenumgebung in die Windows NT-basierten Betriebssystemen zu integrieren, die vergleichbaren Funktionen in anderen Systemen ebenbürtig ist. Die bisherige Eingabeaufforderung ist ja im Grunde genommen das letzte Überbleibsel von MS-DOS. Heute gäbe es allerdings kaum noch Bedarf, alte DOS-Programme unter Windows Vista auszuführen. Zudem ist von der einstigen Kompatibilität kaum noch etwas übrig. Um eine uralte Branchenlösung bei Bedarf trotzdem auszuführen zu können, gibt es mit virtuellen PCs heute bessere Lösungen.

Bild 2: Die Assistenten der EMC zeigen als Hilfestellung die ausgeführten Shell-Befehle an.
Bild 2: Die Assistenten der EMC zeigen als Hilfestellung die ausgeführten Shell-Befehle an.

Die neue PowerShell als Ersatz für die Eingabeaufforderung schlägt nun eine Brücke von der Kommandozeile zu modernen Technologien wie .NET. Sie kann deshalb auch als Basis für Skripts und kleinere Programmieraufgaben dienen. Über sie kann man genauso durch Verzeichnisse navigieren und Programme wie auch alte Batchdateien ausführen. Die Stärke liegt allerdings in den integrierten Befehlen, den Cmdlets.

Die neue Shell arbeitet objektorientiert. Dies bedeutet zum Beispiel für Exchange, dass die Exchange-typischen Objekte wie Postfächer oder Verteilergruppen sich als Basis von Befehlen wieder finden. Einzelne Befehle entstehen durch Verknüpfung eines Objekts mit einer Methode. Hierdurch entstehen Befehlswörter wie set-mailbox oder get-DistributionGroup.

Bild 1: Die Management Console bildet eine grafische Oberfläche über der Management Shell.
Bild 1: Die Management Console bildet eine grafische Oberfläche über der Management Shell.

Gleichzeitig bestehen die Ergebnisse wie auch eventuelle Eingabedaten der Befehle nicht mehr nur aus Texten. Es sind Objektverweise, die nur bei der Ausgabe an der Konsole in Text umgesetzt werden. Die .NET-Funktion ToString() erfüllt hier ihren Dienst. Bei Verkettung von Befehlen kann dagegen direkt mit den Objekten weitergearbeitet werden, und es muss kein Text interpretiert werden.

Bild 3: Die neue Shell besitzt eine ausführliche Online- Hilfe.
Bild 3: Die neue Shell besitzt eine ausführliche Online- Hilfe.

Das System der Benennung hat Microsoft sehr konsequent bei der Gestaltung der PowerShelleigenen Befehle, den CmdLets, umgesetzt. Ein Cmdlet-Name zerfällt typischerweise in einen Objektnamen (auch Noun genannt) und eine mit Bindestrich vorangestellte Methode (Verb): Verb-Noun. Daran gehängt werden die zur Ausführung notwendigen Parameter, wie beispielsweise die Datenbank, in der ein Postfach angelegt werden soll. Ein integriertes Hilfesystem liefert wie in der alten Eingabeaufforderung zusätzliche Erklärungen:

help Cmd-let oder Cmd-let -?

Wichtige Objekte (Nouns) in der Exchange Administration sind beispielsweise:

  • Mailbox: ein Postfach

  • User: ein Benutzerobjekt aus dem Active Directory

  • Mailuser: ein Benutzer mit Exchange-Postfach

  • Contact/Mailcontact: die User und Mailuser entsprechenden Kontaktobjekte

  • DistributionGroup: eine Verteilergruppe

  • DynamicDistributionGroup: eine anfrage-basierte Verteilergruppe

  • PublicFolder/MailPublicFolder: Ein öffentlicher Ordner, wenn die entsprechende Exchange-Funktion installiert ist.

  • MailboxDatabase: eine Exchange-Postfach-Datenbank

  • StorageGroup: eine Speichergruppe

Typische Aktionen (Verbs) in der PowerShell sind:

  • New: Legt eine neue Instanz des Objekts an.

  • Get: Ruft einen Verweis auf ein existierendes Objekt ab.

  • Set: Schreibt Änderungen, die über einen Verweis gemacht wurden, in das reale Objekt zurück.

  • Enable: Aktiviert bestimmte Eigenschaften eines Objekts.

  • Disable: Deaktiviert Eigenschaften eines Objekts.

  • Remove: Löscht ein Objekt.

Zusätzlich besitzt die PowerShell einige Standardparameter, die für viele Cmdlets verügbar sind:

  • whatif: Die Aktion wird nur simuliert, um den Verlauf zu testen. Es werden keine Änderungen vorgenommen.

  • confirm: Das Cmdlet verlangt eine manuelle Bestätigung der Aktion. Dies ist vor allem in Skripts hilfreich.

  • validate: Überprüft lediglich die übergebenen Parameter und die Befehlssyntax.

Mit den neuen Shell-Befehlen lassen sich viele Dinge schneller und effizienter als bisher bewerkstelligen. Allerdings sollte dies auch nicht überschätzt werden. Microsofts Marketing verwendet gerne den Begriff der Einzeiler (Oneliner). Viele Dinge, die früher viele Zeilen an Skriptcode benötigten, sollen jetzt in einer Zeile möglich sein.

Allerdings ist nur ein Teil dieser alten Zeilen auf die komplexe alte Schnittstelle zurückzuführen. Ein großer Teil wird durch die Daten hervorgerufen, die beispielsweise bei der Anlage eines Benutzerkontos in einer realen Umgebung übergeben werden müssen. Diese müssen auch mit der neuen Shell eingetragen werden. Das kann zwar auch innerhalb einer Zeile geschehen, wird aber unter Umständen eine sehr lange Zeile sein.

Eine kurze Referenz für die Exchange Management Shell findet sich unter folgendem Link: http://go.microsoft.com/fwlink/?LinkId=64647.