Ich möchte feststellen, ob ein 2012-Server mithilfe von WMI als Core-Installation eingerichtet wurde. Eine frühere Frage scheint darauf hinzudeuten, dass ich die OperatingSystemSKU von Win32_OperatingSystem erhalten kann . Meine Windows 2012 Core-Systeme melden eine OperatingSystemSKU von 7. Der Artikel aus der anderen Frage scheint darauf hinzudeuten, dass es sich um einen PRODUCT_STANDARD_SERVER handelt. Bei einer Core-Installation sollte stattdessen der Wert 0x0000000D für PRODUCT_STANDARD_SERVER_CORE angezeigt werden.
Was vermisse ich hier? Ich möchte schließlich eine Richtlinie erstellen und das Targeting auf Elementebene verwenden, um diese Richtlinie nur auf Windows 2012 Server Core-Installationen anzuwenden.
PS C:\Users\zoredache\Documents> gwmi -Query "select OPeratingSystemSKU,Version,ProductType from Win32_OperatingSystem"
__GENUS : 2
__CLASS : Win32_OperatingSystem
__SUPERCLASS :
__DYNASTY :
__RELPATH : Win32_OperatingSystem=@
__PROPERTY_COUNT : 3
__DERIVATION : {}
__SERVER :
__NAMESPACE :
__PATH :
OperatingSystemSKU : 7
ProductType : 2
Version : 6.2.9200
windows-server-2012
wmi
windows-server-core
Zoredache
quelle
quelle
Get-WMIObject Win32_OptionalFeature | Select Name, InstallState
und filtern, ob auf dem Server die Server-GUI-Bits installiert sind oder nicht.Antworten:
In PowerShell:
gibt 1 auf einem vollständigen Server und 2 auf einer Server-Core-Installation zurück.
Bearbeiten:
Während meine Antwort oben richtig ist, gibt es zwei Probleme damit:
Wenn Sie diesen Befehl auf einer Workstation verwenden, wird nichts zurückgegeben, sodass Sie eine zusätzliche Prüfung hinzufügen müssen.
Es ist langsam, als ich es versuchte, es dauerte zwischen 600 und 3500 Millisekunden.
Der pragmatischere Ansatz besteht also darin, nur das Vorhandensein einer bestimmten Datei zu überprüfen:
Dies kehrt
$false
für eine Server Core-Installation und$true
für alle anderen zurück und die Ausführung dauert eine Millisekunde .quelle
Komischerweise enthielt der von Ihnen verlinkte MSDN-Artikel die Antwort:
Dies liegt daran, dass Server 2012 frei zwischen "Server Core" und "Voll" -Installation konvertiert werden kann, indem einfach die entsprechenden Funktionen hinzugefügt oder entfernt werden.
Sie möchten prüfen, ob diese Funktionen vorhanden sind oder nicht (z. B. Server-Gui-Mgmt-Infra, Server-Gui-Shell, Desktop-Experience).
quelle
Da die GUI nur eine Funktion ist, können Sie die Liste der installierten Funktionen abfragen
Nur dies in Powershell auf einem Server hier zu testen, hat gut genug funktioniert:
Erstellen Sie eine Liste mit Funktionen, um den Namen zu ermitteln
Wenn ich den Text von features.txt durchsuche, erfahre ich, dass das Feature den Namen "Server-Gui-Mgmt" trägt (möglicherweise werden auch andere Features installiert, wie Michael in seiner Antwort festhält, sodass Sie auch nach diesen suchen können) wenn das da ist
quelle
Ich vermute, dass Sie stattdessen die Features abfragen können, da sie im Wesentlichen gleich sind wie im Jahr 2012 und nur einige optionale Features aufweisen, um sie voneinander zu trennen.
Dieser Artikel ist eine Referenz für die Klasse Win32_OptionalFeature, mit der Sie die Features abfragen können. Die optionalen Funktionen sind wie in diesem Artikel beschrieben als Server-Gui-Mgmt-Infra, Server-Gui-Shell und Desktop-Experience definiert .
Sie können die drei abfragen und mithilfe der Booleschen UND- und NICHT-Logik Server auswählen, auf denen keine dieser Funktionen installiert ist.
quelle
Ich würde Win32_ServerFeature verwenden, es ist eine viel kleinere Klasse und enthält nur die auf dem Server installierten Rollen. Abfragen mit der Funktion "Win32_Server" sollten viel schneller zurückgegeben werden.
quelle
Es wurden einige Erläuterungen zu den Antworten für lokale und entfernte Szenarien im Hinblick auf die Leistung erörtert. Der Fragesteller fragte WMI, und sein Beispiel verwendete PowerShell, um WMI aufzurufen. Die Verwendung von WMI direkt aus nicht verwaltetem Code ist ebenfalls schneller.
Bitte beachten Sie, dass die Ansätze effektiv für Server 2012 und Server 2012 R2 gelten und möglicherweise nicht für zukünftige Versionen gelten.
Einige Kompromisse, abhängig von Ihrem Szenario ... In den meisten Fällen wird Win32_ServerFeature als allgemeine Lösung bevorzugt, oder die lokale Datei wird zur Not überprüft.
Das deckt lokale und entfernte Online-Szenarien ab. Einige der oben genannten Optionen zielen auch auf ein Offline-Image ab.
quelle
Ich dachte nur, ich würde mich mit einem WMI-Filter für diese Lösung einverstanden erklären, damit Sie Gruppenrichtlinienobjekte auf Core 2012+ -Systeme anwenden können:
So testen Sie dies in der Befehlszeile:
Ich bin auf diesen Thread gestoßen, als ich versucht habe, einen Weg zum Erstellen von WMI-Filtern für Core 2012-Server zu finden, und aus irgendeinem Grund habe ich WMI nicht veranlasst, Win32_OptionalFeature zu überprüfen (oder tatsächlich, dass ein solcher Pfad existiert). Hoffe das hilft jemand anderem.
quelle
Unter Windows Server 2012 R2 verwende ich Folgendes: Die Leistung ist gut und dennoch recht eindeutig.
quelle