DISM hilft, die Features zu kontrollieren

11. März 2010

Der Windows Server 2008 steht aktuell in Form des Release 2 zur Verfügung. Auch wenn diese Produktbezeichnung  auf den ersten Blick nur geringe Veränderungen vermuten lässt, findet sich bei genauerer Betrachtung doch eine ganze Reihe neuer und veränderter Werkzeuge. Mark Minasi stellt hier einige Änderungen bei den Tools für die Kommandozeile vor – allen voran das Werkzeug DISM. Diese Abkürzung steht für „Deployment Image Servicing and Management“.

Bild 1. Kaum als Kommandozeilen-Tool bekannt, schon wieder veraltet: Wer unter der aktuellen R2-Version von Windows Server 2008 das Werkzeug „Servermanagercmd“ aufruft, wird darauf hingewiesen, dass die Entwickler diese Software schon wieder „ausgemustert“ haben.

Die verschiedenen Produkt-Releases von Microsoft mögen manchen Betrachter zu der Annahme verleiten, dass die Abkürzung „R2“ hinter dem Namen des Betriebssystems für „kleine“ und „unwesentliche“ Änderungen steht. Wer sich allerdings einige Zeit mit dem Windows Server 2008 Release 2 beschäftigt hat, wird diese Einschätzung sicher nicht teilen:

So stand der Autor vor der Aufgabe, beispielsweise nach dem ersten Aufsetzen eines solchen Windows Servers das Hinzufügen einiger Rollen und Merkmale zu automatisieren. Dazu wollte er das Kommando „Servermanagercmd“ sowie das gründlich überholte Kommando „OCSetup“ an der Kommandozeile aufrufen, um zu sehen, wie diese Befehle unter der R2-Version arbeiten.

Dabei bekam er dann allerdings nur die ziemliche knappe Hilfemeldung des Kommandos „Servermanagercmd“ angezeigt, die ihm mitteilte, dass diese Software „veraltet“ sei und deshalb nicht gewährleistet werden kann, dass sie in den weiteren Versionen des Betriebssystem auch weiterhin unterstützt wird (Bild 1): ein Kommandozeilen-Tool, das kaum bekannt war und schnell wieder verschwindet…

Dafür stellt Windows Server 2008 in der R2-Version gleich zwei komplett neue Möglichkeiten auf der Kommandozeile zur Verfügung, mit deren Hilfe der Administrator Rollen und Features hinzufügen, löschen oder auch ändern kann. Bei einem dieser Werkzeuge handelt es sich um eine Sammlung von Powershell-Cmdlets, deren Einsatz das Vorhandensein des Dotnet-Frameworks in der Version 3.5 voraussetzt. Das andere Werkzeug ist ein Standalone-Kommando mit dem Namen DISM, was für „Deployment Image Servicing and Management“ steht. Dieser Name zeigt schon ziemlich deutlich, dass die Verwaltung der verschiedenen Features nicht die einzige Aufgabe dieser Software ist.

Microsoft beschreibt den Zweck des Programms vielmehr damit, dass es zum „Aufzählen, Installieren, Deinstallieren, Konfigurieren und Aktualisieren von Funktionen und Paketen in Windows-Abbildern“ dient. Aber da es auch mit dem aktuell „montierten Abbild“, sprich  dem laufenden Betriebssystem arbeiten kann, ist es sehr vielseitig einsetzbar. Wie konzentrieren uns in diesem Artikel auf die Möglichkeiten, die DISM zur Kontrolle der verschiedenen Betriebssystem-Features bereitstellt.

DISM auf dem Server: Rollen und Features

Das Programm DISM kann dem Administrator alle möglichen Rollen und Features anzeigen und dabei auch vermerken, welche davon installiert sind oder nicht. Diese Ausgabe ähnelt der, die auch das Kommando „Servermanagercmd -Query“ auf den Bildschirm bringt. Um diese Liste zu bekommen, muss der Administrator das folgende Kommando eingegeben:

dism /online /get-features

Danach wird ihm das Kommando mehrere Bildschirmseiten voll mit den verschiedenen Rollen und Features anzeigen. Ein Ausschnitt davon ist im folgenden Abschnitt dargestellt:

Funktionsname: FaxServiceRole
Status:       Deaktiviert
Funktionsname: Printing-Server-Role
Status:       Aktiviert

Bild 2. Welche Rollen und Features sind auf dem Server möglich und welche sind bereits installiert? Das Kommando DISM gibt direkt an der Kommandozeile Auskunft darüber.

Im Bild 2 ist ebenfalls ein entsprechender Ausschnitt aus dieser Ausgabe zu sehen. Dieses Beispiel verdeutlicht zudem, dass wir auf dem Testsystem eine Rolle aktiviert haben, die DISM mit dem Namen „Printing-Server-Role“ bezeichnet, während die Rolle „FaxServiceRole“ nicht aktiv ist.

Dabei kann es leider für den Systemverwalter bei einigen der Rollen und Features etwas schwieriger sein, die unterschiedlichen Bezeichnungen der Rollen an der Kommandozeile mit denen im Server-Manager in Übereinstimmung zu bringen: Dort wird die „Printing-Server-Role“ dann nämlich als „Druck- und Dokumentdienst“ (Print and Document Services) bezeichnet.

Soll in unserem Beispiel dann zusätzlich die Rolle des Fax-Servers ebenfalls installiert werden, so kann dies ebenfalls mittels DISM und ohne Rückgriff auf den Server-Manager geschehen. Dazu ist dann der folgende Aufruf nötig, dessen Ausführung in Bild 3 zu sehen ist:

dism /online /enable-feature:FaxServiceRole

Ein Nachteil des bisherigen Kommandozeilen-Werkzeugs „Servermanagercmd“ bestand sicherlich darin, dass es bei seinem Einsatz im Prinzip nur möglich war, pro Aufruf eine Rolle oder ein Feature zu bearbeiten. Diese Einschränkung konnte zwar durch den Einsatz von selbstgeschriebenen XML-Dateien überwunden werden. Das stellte sich aber in der Praxis als ziemlich aufwändig und fehleranfällig heraus.

Bei DISM ist es nun möglich, mit Hilfe einer etwas erweiterten Syntax mehr als eine Rolle oder Feature mit einem Kommandoaufruf zu installieren, beziehungsweise zu bearbeiten:

dism /online /enable-feature:
/featurename:<Name im Abbild> /featurename:<Name im Abbild>

Sollen beispielsweise der Fax-Dienst und die Rolle des DNS-Servers in einem Kommando installiert werden, so gelingt das mit folgendem Aufruf:

dism /online /enable-feature:
/featurename:DNS-Server-Full-Role /featurename:FaxServiceRole

Will der Administrator hingegen ein Feature oder eine Rolle wieder deinstallieren, so gelingt dies einfach durch die Verwendung des Schalters /disable-feature beim Aufruf des Kommandos.

Das DISM-Tool kann auch auf Windows-7-Systemen dazu eingesetzt werden, die entsprechenden Features innerhalb eines Images zu bearbeiten. So kann es sich beispielsweise als sehr sinnvoll erweisen, Desktop-Images im Unternehmen so auszurollen, dass bei diesen Systemen die Windows-Spiele nicht mehr mit an Bord sind. Dies kann der Administrator mit dem folgenden Kommando erreichen:

dism /online /disable -feature:InboxGames

Bild 3. Neue Server-Rolle schnell hinzugefügt: Wer die Rollouts von Server- und Desktop-Systemen automatisieren möchte, kann sich mit diesem Werkzeug die Arbeit deutlich erleichtern.

Das Programm ist zudem auch in der Lage, die Abhängigkeiten zwischen Rollen und Features richtig zu behandeln: Versucht der Systemverwalter eine Rolle oder ein Feature zu installieren, das eine andere Rolle oder ein bestimmtes Merkmal des Systems zum Funktionieren benötigt, so fragt das Kommando automatisch nach, ob auch dieser Teil auf dem System installiert werden soll.

Fazit und kleine Ungereimtheiten…

Wer DISM mit dem vorherigen Werkzeug „Servermanagercmd“ vergleicht, wird feststellen, dass schon diese Software die entsprechenden Aufgaben durchaus gut erledigen konnte. Allerdings bestand die sehr große Einschränkung darin, dass „Servermanagercmd“ auf das Dotnet-Framework aufsetzte und damit auf der Server-Core-Version von Windows 2008 Server  nicht einzusetzen war.

Deshalb existiert auch noch ein zweites Werkzeug für diese Zwecke mit der Bezeichnung „OCsetup“, das dann auf diesen Plattformen verwendet werden konnte.

Bei DISM haben die Microsoft-Entwickler hingegen darauf geachtet, dass dieses Werkzeug so unabhängig wie möglich einzusetzen ist. Aus diesem Grund arbeitet es auch sowohl auf dem Server Core 2008 R2 und auf dem Windows Server 2008 R2 mit der vollen Windows-Oberfläche als auch auf dem Windows Preinstallation Environment (Windows PE) in der Version 3.0.

Neben all diesen guten Eigenschaften haben sich leider bei diesem Software-Werkzeug einige kleine Ungereimtheiten eingeschlichen, die in der täglichen Arbeit zu Irritationen führen können. Dazu gehört die bereits erwähnten Inkonsistenz bei den Namensbezeichnungen, die selbst bei sehr bekannten Rollen wie dem DNS-Server verlangen, dass hier „DNS-Server-Full-Role“ eingegeben wird, während der DHCP-Server einfach als „DHCP Server“ bezeichnet wird.

Auch das Beharren auf eine Kontext-sensitive Schreibweise bei den verschiedenen Paketen, das dazu führt dass bei Eingabe von „inboxgames“ statt „InboxGames“ die Antwort:

Der Funktionsname “inboxgames” ist unbekannt.
Ein Windows-Funktionsname wurde nicht erkannt

auf dem Bildschirm erscheint, erinnert eher an die Kommandoschnittstellen ältere Unix-Systeme als an ein modernes Windows-Betriebssystem. Hier hätten sich die Entwickler durchaus etwas mehr Mühe machen können, auch an der Kommandozeile eine etwas einfachere Bedienung zu realisieren.

Aber von diesen Ungereimtheiten abgesehen steht dem Administrator mit DISM ein Werkzeug zur Verfügung, auf das er unbedingt einen näheren Blick werfen sollte, wenn er die Rollouts von Server- und Desktop-Systemen automatisieren möchte oder muss.

Mark Minasi/fms

Lesen Sie auch