Les filtres WMI : syntaxe, exemples et création
Sommaire
I. Présentation
Nous avons vu jusqu'ici qu'il était possible de lier une stratégie de groupe à une unité d'organisation, à un domaine ou encore à un site directement, mais cela peut montrer ses limites. En effet, imaginez que l'on ait une unité d'organisation nommée "Ordinateurs" et qui contient tous les PC de l'entreprise.
Dans cette OU, nous retrouvons des objets ordinateurs avec des postes sous Windows 8 et Windows 10. Dans certains cas, on peut avoir besoin d'appliquer une stratégie de groupe uniquement aux PCs dont le système d'exploitation est Windows 10. C'est là que le filtre WMI intervient, c'est ce que nous allons voir dans ce chapitre au travers différents exemples.
II. Où créer un filtre WMI pour une GPO ?
La première question que l'on se pose c'est : où est-ce que je vais pouvoir créer le filtre WMI ? Pour cela, rendez-vous dans la console GPMC (Éditeur de stratégie de groupe).
Ensuite, effectuez un clic droit sous "Filtres WMI" et cliquez sur "Nouveau".
Une fenêtre va s'ouvrir : je vous invite à lire la suite.
III. Filtre WMI pour cibler un système d'exploitation
Pour commencer, nous allons créer un filtre WMI qui va permettre de cibler une version spécifique de Windows, par exemple cibler uniquement les postes sous Windows 10.
Pour cibler une version précise de Windows, nous avons besoin de connaître son numéro de version.
Concernant Windows 10 et les versions antérieures, voici un récapitulatif :
Système d’exploitation | Numéro de version |
Windows XP – 32 bits | 5.1 |
Windows XP – 64 bits | 5.2 |
Windows Vista | 6.0 |
Windows 7 | 6.1 |
Windows 8 | 6.2 |
Windows 8.1 | 6.3 |
Windows 10 (1709) | 10.0.16299 |
Windows 10 (1803) | 10.0.17134 |
Windows 10 (1809) | 10.0.17763 |
Windows 10 (1903) | 10.0.18362 |
Pour les versions "Windows Server", il y a également un numéro de version à chaque fois :
Système d’exploitation | Numéro de version |
Windows Server 2003 R2 | 5.2 |
Windows Server 2008 | 6.0 |
Windows Server 2008 R2 | 6.1 |
Windows Server 2012 | 6.2 |
Windows Server 2012 R2 | 6.3 |
Windows Server 2016 (1607) | 10.0.14393 |
Windows Server 2016 (1709) | 10.0.16299 |
Windows Server 2019 (1809) | 10.0.17763 |
A la lecture des deux tableaux ci-dessus, vous remarquerez que certains numéros de versions sont identiques entre les éditions clientes et les éditions serveurs Windows. Comment faire pour les différencier malgré tout ?
Note : dans les deux cas, ce numéro de version est stocké dans l'Active Directory au sein de chaque objet de type ordinateur, si vous avez besoin de vérifier.
Nous allons utiliser un second paramètre nommé "ProductType" qui lorsqu'il est égal à "1" cible les éditions clientes de Windows. Lorsqu'il est à "2" il cible les serveurs contrôleurs de domaine et à "3" il cible les autres serveurs.
Vu que chaque version de Windows 10 dispose de son propre numéro de version, nous pouvons soit cibler une version spécifique de Windows 10, soit cibler toutes les versions de Windows 10 d'un coup puisqu'il commence à chaque fois par "10.0".
Maintenant, revenez sur la fenêtre de création de notre nouveau filtre WMI.
Commencez par indiquer un nom, par exemple : Windows_10_Only. Profitons-en pour indiquer une description également.
Ensuite, nous allons devoir créer une requête, c'est grâce à elle que nous allons pouvoir créer notre filtre pour retenir que les objets ordinateurs qui correspondent à Windows 10.
La première chose consiste à définir l'espace de noms, mais pour la majorité des cas il n'est pas utile de changer la valeur par défaut : root\CIMv2.
Concernant la requête WMI, elle sera construite de cette façon :
SELECT * FROM <Classe WMI> WHERE <Propriété> = <Valeur>
Pour la "classe WMI", nous allons utiliser Win32_OperatingSystem, ce qui nous donne accès à la propriété "Version". Nous allons devoir vérifier la valeur de cette propriété.
Ce qui nous donne, pour sélectionner tous les PC Windows 10 (toutes versions)
SELECT * FROM Win32_OperatingSystem WHERE Version LIKE "10.0%" AND ProductType="1"
En plus de ce que l'on vient de voir précédemment, on ajoute l'opérateur "LIKE" en plus et un "%" après le numéro de version pour prendre toutes les "sous-versions" éventuelles.
Il faut alors valider la requête et cliquer sur "Enregistrer" pour valider la création du filtre.
Maintenant, il ne reste plus qu'à voir comment l'associer à une GPO.
IV. Associer un filtre WMI à une GPO
Un filtre WMI ne s'applique à une GPO que lorsqu'il y a une liaison entre les deux. Pour réaliser cette opération, dans la console GPMC, cliquez sur votre GPO. Ensuite, vérifiez que vous êtes bien sur l'onglet "Étendue".
Dans le bas de la fenêtre, vous devriez voir la zone "Filtrage WMI". Grâce à la liste déroulante, sélectionnez votre filtre WMI et cliquez sur "Oui" sur la fenêtre qui s'affiche pour valider.
À partir de ce moment-là, le filtrage WMI va s'appliquer sur votre GPO. Si cela ne fonctionne pas, il faudra vérifier votre requête.
V. Exemples complémentaires
Pour finir ce chapitre, voici quelques exemples supplémentaires pour vous aider dans la construction de vos requêtes :
- Sélectionner tous les PC Windows 10 en 32 bits
SELECT * FROM Win32_OperatingSystem WHERE Version LIKE "10.0%" AND ProductType="1" AND OSArchitecture = "32-bit"
- Sélectionner tous les PC Windows 7
SELECT * FROM Win32_OperatingSystem WHERE Version LIKE "6.1%" AND ProductType="1"
- Sélectionner tous les serveurs sous Windows Server 2016/2019
SELECT * FROM Win32_OperatingSystem WHERE Version LIKE "10.%" AND (ProductType = "2" OR ProductType = "3" )
Comme nous devons sélectionner les serveurs avec le ProductType à "2" et à "3" pour prendre tous les serveurs, cela ajoute de la complexité à la requête, on doit coupler l'usage du "AND" (ET) et du "OR" (OU).
- Sélectionner tous les objets ordinateurs avec un OS 64 bits (processeur 64 bits)
SELECT * FROM Win32_Processor WHERE AddressWidth = "64"
- Sélectionner tous les PC dont le nom commence par "PC-PORTABLE-"
SELECT Name FROM Win32_ComputerSystem WHERE Name LIKE "PC-PORTABLE-%"
- Sélectionner tous les PC Windows 8 et Windows 8.1 (soit deux versions différentes) :
SELECT * FROM Win32_OperatingSystem WHERE (Version LIKE "6.2%" OR Version LIKE "6.3%") AND ProductType = "1"
Pour ceux qu'ils le souhaitent, regardez ce tutoriel pour voir comment réaliser un filtre WMI pour cibler uniquement sur les machines virtuelles.