Je souhaite détecter si un serveur 2012 a été configuré en tant qu'installation principale à l'aide de WMI. Une question antérieure semble indiquer que je peux obtenir le OperatingSystemSKU à partir de Win32_OperatingSystem . Mes systèmes Windows 2012 Core signalent un OperatingSystemSKU de 7. L' article de l'autre question semble indiquer qu'il s'agit d'un PRODUCT_STANDARD_SERVER, et s'il y avait une installation de base, je devrais m'attendre à voir une valeur de 0x0000000D à la place pour PRODUCT_STANDARD_SERVER_CORE.
Qu'est-ce que j'oublie ici. Je souhaite finalement créer une stratégie et utiliser le ciblage au niveau de l'élément pour n'appliquer cette stratégie qu'aux installations de Windows 2012 Server Core.
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
la source
la source
Get-WMIObject Win32_OptionalFeature | Select Name, InstallState
et filtrez si le serveur a les bits GUI du serveur installés ou non.Réponses:
Dans PowerShell:
renvoie 1 sur un serveur complet et 2 sur une installation principale du serveur.
Éditer:
Bien que ma réponse ci-dessus soit correcte, elle présente deux problèmes:
Lorsque vous utilisez cette commande sur un poste de travail, elle ne renvoie rien, vous devez donc ajouter une vérification supplémentaire pour cela.
C'est lent, quand je l'ai essayé, ça a pris entre 600 et 3500 millisecondes.
L'approche la plus pragmatique consiste donc simplement à vérifier l'existence d'un certain fichier:
Cela revient
$false
pour une installation Server Core et$true
pour toutes les autres et il faut une milliseconde pour s'exécuter.la source
Drôle, cet article MSDN que vous avez lié contenait la réponse:
En effet, Server 2012 peut être librement converti entre une installation "Server Core" et une installation "complète" simplement en ajoutant ou en supprimant les fonctionnalités appropriées.
Vous voudrez vérifier la présence ou l'absence de ces fonctionnalités (par exemple Server-Gui-Mgmt-Infra, Server-Gui-Shell, Desktop-Experience).
la source
Comme l'interface graphique n'est qu'une fonctionnalité, vous pouvez interroger la liste des fonctionnalités installées
Le simple fait de tester cela dans PowerShell sur un serveur ici a bien fonctionné:
Vider une liste de fonctionnalités pour saisir le nom
La recherche dans le texte de features.txt m'indique que la fonctionnalité est nommée 'Server-Gui-Mgmt' (d'autres fonctionnalités peuvent également être installées comme Michael le note dans sa réponse, afin que vous puissiez également les tester), et nous pouvons rechercher pour voir si c'est présent
la source
Je soupçonne qu'étant donné qu'ils sont essentiellement les mêmes en 2012 avec seulement quelques fonctionnalités optionnelles pour les différencier, vous pouvez interroger les fonctionnalités à la place.
cet article est une référence pour la classe Win32_OptionalFeature, qui vous permettra d'interroger les fonctionnalités. Les fonctionnalités facultatives sont définies comme Server-Gui-Mgmt-Infra, Server-Gui-Shell et Desktop-Experience, comme indiqué dans cet article .
Vous pouvez rechercher les 3 d'entre eux et utiliser la logique booléenne ET et NON pour sélectionner les serveurs sur lesquels aucune de ces fonctionnalités n'est installée.
la source
J'utiliserais Win32_ServerFeature, c'est une classe beaucoup plus petite et ne contient que les rôles installés sur le serveur. Les requêtes utilisant la fonction Win32_Server devraient retourner beaucoup plus rapidement.
la source
Quelques éclaircissements sur les réponses pour les scénarios locaux et distants lorsque les performances ont été discutées. L'interrogateur a demandé à WMI, et son exemple a utilisé PowerShell pour appeler WMI. L'utilisation de WMI directement à partir de code non managé est également plus rapide.
Veuillez noter que les approches s'appliquent efficacement à Server 2012 et Server 2012 R2 et peuvent ne pas s'appliquer aux versions futures.
Quelques compromis en fonction de votre scénario ... Pour la plupart des cas, Win32_ServerFeature est préféré comme solution générale, ou la vérification du fichier local à la rigueur.
Cela couvre les scénarios locaux et distants en ligne. Certains des éléments ci-dessus cibleront également une image hors ligne.
la source
Je pensais simplement que je mettrais un filtre WMI pour cette solution, vous pouvez donc appliquer des GPO aux systèmes Core 2012+:
Pour tester cela sur la ligne de commande:
Je suis tombé sur ce fil en essayant de trouver un moyen de créer des filtres WMI pour les serveurs Core 2012, et pour une raison quelconque, je n'ai pas pensé que WMI vérifie Win32_OptionalFeature (ou bien qu'un tel chemin existe). J'espère que ceci aide quelqu'un d'autre.
la source
Sur Windows Server 2012 R2, j'utilise ce qui suit, les performances sont bonnes tout en étant assez explicites.
la source