Installationsvarianten (Nano, Core, Desktop) und Editionen von Windows Server erkennen

    Nano ServerWindows Server bietet in der Version 2016 die Installations­optionen Desktop Experience, Core und Nano. Nach­dem gerade Nano Server einigen Einschrän­kungen unter­liegt, kann es etwa vor der Instal­lation von Features, Soft­ware oder bei der Aus­führung von Scripts wichtig sein, die in­stal­lierte Variante abzu­fragen.

    Windows Server 2016 führte als neue Option den Nano Server ein und gab gleichzeitig das Minimal Server Interface auf, das Microsoft mit Server 2012 brachte. Während man unter Server 2012 R2 noch zwischen den drei Installationsoptionen umsteigen konnte, ist das in der Version 2016 nicht mehr möglich (siehe: Windows Server 2016: Nano as a Service, kein Wechsel zwischen GUI und Core).

    Vielzahl an SKUs

    Laufen im Netzwerk mehrere Versionen von Windows Server, so macht dieser Wechsel die Lage relativ unübersichtlich. Das zeigt sich besonders bei der Abfrage der WMI-Klasse Win32_OperatingSystem, deren Eigenschaft OperatingSystemSKU die gewünschte Auskunft geben sollte.

    Wie diese Tabelle auf MSDN belegt, ist über die Jahre ein regelrechter SKU-Wildwuchs entstanden. Die Übersicht auf MSDN weist mittlerweile 33 Kombinationen aus Version, Edition und Installations­option aus.

    Wenn man nur die wichtigsten Varianten berücksichtigt, dann dürfte folgendes Script ausreichen. Bei Bedarf kann man es noch um weitere Einträge in der Liste ergänzen.

    Die function Get-WsVersion gibt zuerst den Titel für die installierte Server-Version aus (Caption) und übersetzt anschließend den numerischen Wert von OperatingSystemSKU in die Lang­darstellung aus der MSDN-Tabelle. Ruft man sie mit der leeren Zeichen­kette auf, dann wird sie auf den lokalen Rechner angewandt.

    Auslesen der Eigenschaft OperatingSystemSKU aus der WMI-Klasse Win32_OperatingSystem mit PowerShell

    In einigen Fällen funktioniert diese Zuordnung nicht verlässlich. So gibt Windows Server 2012 Standard als Core-Installation den Wert 7 zurück, der eigentlich der Desktop Experience vorbehalten sein sollte.

    Installationsoption aus Registry auslesen

    Muss sich ein Script darauf verlassen, dass es beispielsweise nicht auf einem Nano Server läuft, dann sollte man lieber auf die Information bauen, die man aus der Registrier­datenbank entnehmen kann. Dazu ruft man

    Get-Item "HKLM:\software\microsoft\Windows NT\CurrentVersion\Server\ServerLevels"

    auf.

    Für den Vergleich, von dem die Ausführung eines Scripts abhängen soll, sind die jeweiligen Eigenschaften dieses Schlüssels erforderlich. Diese sind

    • Server-Gui-Mgmt
    • Server-Gui-Shell
    • ServerCore
    • ServerCoreExtended
    • NanoServer

    Will man also ermitteln, ob ein Script auf einem Nano Server läuft, könnte man das so feststellen:

    Nano Server mittels Registry-Schlüssel identifizieren

    Wenn das Script auch auf einer Workstation ausgeführt wird, dann sollte man den Schlüssel vorher mit Test-Path abfragen, um eine Fehlermeldung zu vermeiden:

    Keine Kommentare