Windows-Paketverwaltung: servermanagercmd, dism, ocsetup, pkgmgr, cmdlets

    Powershell cmdlets für Server ManagerWenn man unter Windows eine Funktion hinzufügen möchte, dann geht man normalerweise den Weg über Systemsteuerung => Programme und Funktionen => Windows-Funktionen aktivieren oder deaktivieren. Unter einer Vollinstallation von Windows Server öffnet dieser Befehl den Server-Manager, der Pakete in Form von Rollen und Features hinzufügen kann. In einigen Fällen, wie unter Server Core oder beim Offline-Servicing einer Installation, muss man die Kommandozeilen-Tools nutzen. Angesichts des Wildwuchses bei diesen Werkzeugen stellt sich bloß die Frage, welche die richtigen sind.

    Liest man im Web die verschiedenen Anleitungen zur Installation von Paketen, dann tauchen für den gleichen Zweck verschiedene Tools auf, ohne dass erkennbar wäre, wodurch sie sich unterscheiden. Zu der im Lauf der Jahre entstandenen Sammlung zählen DISM, ocsetup, pkgmgr und servermanagercmd.

    servermanagercmd: Fast neu und schon veraltet

    Die Wahl eines Tools ist nicht immer der freien Entscheidung überlassen, sie hängt vor allem davon ab, welches auf der benutzten Windows-Version überhaupt verfügbar ist. So wird es nicht überraschen, dass servermanagercmd unter Windows 7 oder Vista nicht zu finden ist. Aber es fehlt auch unter Server 2008 R2 Core, während es in der Vollinstallation von Server 2008 R2 vertreten, dort aber als veraltet markiert ist. Dabei wurde das Tool erst mit Windows Server 2008 eingeführt.

    Dennoch ist servermanagercmd nach wie vor ein gebrauchsfähiges Tool, weil es seine Aufgaben mit einer überschaubaren Zahl an Optionen erledigt, die zudem ausreichend über die Online-Hilfe dokumentiert sind. Außerdem fällt es relativ einfach, die für die Installation benötigten Namen der Rollen und Pakete zu ermitteln, indem man den Parameter -query verwendet.

    DISM

    Ähnlich in der Verwendung ist DISM (Deployment Image Servicing and Management), das Bestandteil des WAIK ist, und dem Mounten und Aktualisieren von System-Images dient. Es gehört aber auch zum Lieferumfang von Windows (Client und Server) und kann dort auch die aktuell aktive Installation verwalten. Mit dem Aufruf

    dism /online /Get-Features

    ermittelt es, welche Features verfügbar und welche davon installiert sind. Die dabei angezeigten Bezeichnungen unterscheiden sich jedoch häufig von jenen, die servermanagercmd ausgibt, und können in diesem nicht ohne weiteres verwendet werden. Beispielsweise heißt das Feature Windows Server-Sicherung bei servermanagercmd nur Backup, während DISM den Namen WindowsServerBackup vorzieht. Mit

    dism /online /Enable-Feature /FeatureName:{Name des Features}

    kann man die gewünschte Funktion aktivieren. Mit anderen Parametern kann DISM auch Pakete hinzufügen oder entfernen. Am Server eignet es sich daher, um Rollen oder Features zu aktivieren.

    OCSetup: Wrapper für pkgmgr und MSIExec

    Der Package Manager (pkgmgr.exe) ist ein vergleichsweise rudimentäres Tool, das mit Vista bzw. Server 2008 eingeführt wurde. Es kann ebenfalls Pakete offline und online hinzufügen oder entfernen. Allerdings bietet es keine Möglichkeit, die Namen der Pakete zu erfragen, die man dem Parameter /p übergeben soll. Eine entsprechende Liste findet man auf Technet, wobei sich herausstellt, dass die dort verwendeten Namen identisch sind mit jenen, die DISM ausgibt.

    Da pkgmgr nur CAB-Dateien verarbeiten kann, hat Microsoft mit OCSetup eine Hülle für den Package Manager und MSIExec entwickelt. Das Tool, seinerseits Nachfolger der unter XP vorhandenen Sysocmgr.exe, nimmt MSI- und CAB-Dateien entgegen und übergibt sie dem passenden Programm.

    OCSetup kann ebenfalls keine Namen von Paketen anzeigen, die auf dem System verfügbar bzw. installiert sind. Allerdings gibt es dafür ein Tool namens OCList, das jedoch nur unter Server Core existiert, während OCSetup auf allen aktuellen Windows-Versionen vorhanden ist. Die von OCList ausgegebenen Bezeichnungen entsprechen jenen von DISM. Das Tool soll mit der nächsten Version von Server Core ausgemustert werden.

    Powershell cmdlets für Server Manager

    Um Rollen und Features auf dem Server zu installieren, empfiehlt Microsoft die Verwendung der cmdlets für den Server Manager. Als Vorteile gegenüber anderen Methoden nennt dieser Technet-Beitrag, dass die Powershell-Scripts funktional und terminologisch mit grafischen Server Manager übereinstimmen und vor allem, dass man die Abhängigkeiten zwischen Rollen und Features nicht kennen muss.

    Damit verfügen sie über eine wesentliche Fähigkeit des Paket-Managements, nämlich solche Abhängigkeiten automatisch aufzulösen. In der Open-Source-Welt sind derartige Package-Manager schon lange selbstverständlich. Dagegen benötigen Tools wie OCSetup eine Antwortdatei, die ihnen mitteilt, in welcher Reihenfolge welche Pakete installiert werden müssen.

    Die cmdlets für den Server Manager decken erwartungsgemäß nicht sämtliche Features von Windows ab, aber sie könnten der Kern eines zukünftigen Paket-Managements sein. Wer heute unter Windows 7 Funktionen über die Kommandozeile oder per Script nachrüsten will, muss dafür DISM, pkgmgr oder OCSetup verwenden.

    Wie servermanagercmd und DISM können die cmdlets alle Namen von installierten bzw. verfügbaren Rollen und Features ermitteln. Sie sind identisch mit jenen, die servermanagercmd verwendet. Bevor man ein Script starten kann, muss man das benötigte Modul importieren:

    import-module servermanager

    Anschließend kann man mit Get-WindowsFeature die Liste der Features auslesen, wobei man mit dem Parameter -name das Ergebnis einschränken kann, etwa um nachzusehen, ob eine bestimmte Rolle installiert ist. Mit Add-WindowsFeature lässt sich das erledigen, während Remove-WindowsFeature wie erwartet Features und Rollen entfernt.

    Keine Kommentare