Filtres WMI : Eviter une dégradation de performance au démarrage
Les filtres WMI sont très utilisés afin d'évaluer si un objet stratégie de groupe (GPO) s'applique sur un ordinateur. Les filtres les plus utilisés chez les clients permettent de déterminer entre autres :
- La version de Windows installée sur l'ordinateur.
- Le type de PC (Portable/Poste fixe).
- Le modèle/marque du PC.
Cependant, l'utilisation de filtres WMI sur les GPO va impacter les performances au démarrage. En effet, l'ordinateur doit évaluer si le filtre est vrai ou faux. En fonction du contenu de la requête WQL, l'évaluation du filtre prend plus de temps, ce qui retarde le processus d'application des GPOs.
Aussi l'utilisation d'un filtre WMI sur une GPO retarde l'application des GPO. En effet, si un filtre doit être évalué, le service Client Stratégie de groupe doit attendre que le service WinMgmt démarre et initialise la couche WMI. Une fois que la couche WMI est initialisée, un processus WMIPrvSe est créé et la requête est évaluée. En fonction des performances de la machine ou de l'état du Repository WMI, le temps d'attente avant l'exécution même de la requête WMI peut être plus ou moins long.
Bonnes pratiques
Eviter les requêtes WQL génériques
Pour une raison de simplicité, les exemples de filtres WMI utilisent tous des requêtes génériques de type SELECT * FROM Classe_WMI WHERE Condition.
Cependant, il est quand même plus long de récupérer tous les éléments de la classe WMI qu'un seul élément et ceci dégrade les performances. Pour optimiser votre filtre, il faut sélectionner qu'un seul élément au lieu d'utiliser le caractère générique * .
Voici un exemple pour déterminer si un PC est du type PC portable :
Select PCSystemType FROM Win32_ComputerSystem WHERE PCSystemType=2
Note: Plusieurs méthodes existent pour évaluer si une machine est un ordinateur portable, par exemple tester la présence du type de RAM So-Dimm.
D'autres type de requêtes sont à proscrire :
- Les requêtes utilisant l'opérateur LIKE
- Les requêtes utilisant la classe WMI Win32_Product (pour plus d'informations consultez l'article suivant : https://blogs.technet.com/b/askds/archive/2012/04/19/how-to-not-use-win32-product-in-group-policy-filtering.aspx
De nouvelles classes WMI ou attributs sont ajoutés à chaque nouvelle version d'un système d'exploitation Windows. Il faut alors vérifier que la requête fonctionne sur chaque système d'exploitation de votre infrastructure.
Pour filtrer les différentes versions de Windows Client on peut utiliser les requêtes suivantes :
Produit |
Requête |
Windows 7 SP1 |
Select ProductType, Version FROM Win32_OperatingSystem WHERE ProductType = 1 AND Version = '6.1.7601' |
Windows 8 et + |
Select ProductType, Version FROM Win32_OperatingSystem WHERE ProductType = 1 AND Version >= '6.2.9200' |
Windows 8.1 Enterprise |
Select ProductType, Version FROM Win32_OperatingSystem WHERE ProductType = 1 AND Version = '6.3.9600' AND OperatingSystemSKU = 4 |
Utilisation des Group Policy Préférences
Il est également possible de filtrer les Préférences avec le ciblage (Item-level targeting). L'item level Targeting utilise des API natives de Windows et n'utilise pas de WMI (sauf si la condition du ciblage est effectuée avec une requête WQL). Les performances de l'Item level targeting sont meilleures par rapport à un filtre WMI classique.
Si vous utilisez des Préférences, il est recommandé de choisir un ciblage avec l'item Level Targeting au lieu d'utiliser un filtre WMI sur l'objet GPO.
Pour plus d'informations vous pouvez consulter l'article suivant : https://technet.microsoft.com/en-us/library/cc733022.aspx
Correctifs pour améliorer les performances des composants WMI
Vous trouverez dans la KB suivante les correctifs de performances pour les composants WMI :
- Suggested hotfixes for WMI related issue on Windows platforms : https://support.microsoft.com/kb/2591403
- https://blogs.technet.com/b/askperf/archive/2011/08/05/suggested-hotfixes-for-wmi-related-issue-on-windows-platforms.aspx
Correctifs pour améliorer les performances des Group Policy Preferences
Windows 7 SP1
- Error code 0x80070003 when a Group Policy preference is applied to Windows 7 clients
- Long startup or logon time on a Windows 7-based or Windows Server 2008 R2-based client computer when you apply a Group Policy preference that has OU filtering
- An enterprise hotfix rollup is available for Windows 7 SP1 and Windows Server 2008 R2 SP1