Filtre WMI pour identifier 32 et 64 bits

Je crée des objets de stratégie de groupe depuis des années et je suis souvent consulté pour résoudre les problèmes de GPO. Dernièrement j’ai dû déboguer des GPO créés par un administrateur. La particularité de cette GPO est s’appliquent de manière aléatoires sur les postes.

Tous ces GPO utilisent les filtres WMI suivants pour identifier les ordinateurs 32 et 64 bits (SVP, CONTINUER DE LIRE MAIS N’UTILISER PAS CES FILTRES WMI):

SELECT * FROM Win32_OperatingSystem WHERE OSArchitecture="32-bit"

SELECT * FROM Win32_OperatingSystem WHERE OSArchitecture="64-bit"

À première vue, tout semble aller bien. Une brève recherche sur Google indique BEAUCOUP de blog / documentations avec ce filtre. Certains préconisent même d’utiliser SELECT * FROM Win32_OperatingSystem WHERE OSArchitecture = “64-bit” pour les 32 bits (spoiler: ce n’est pas mieux).

Alors, quel est le problème ? J’exécute Get-WMIObject -Query ‘SELECT * FROM Win32_OperatingSystem WHERE OSArchitecture=”64-bit”‘ et j’obtiens… rien… étrange car mon PC a un CPU et un OS 64 bits.

Je poursuis donc avec un Get-WmiObject -Query ‘SELECT OSArchitecture FROM Win32_OperatingSystem’ :

Avec cette commande, j’ai eu le coupable: sur mon système, installé en français, la valeur OS Architecture value is 64 bits et non 64bits (tiret en moins).

Donc, s’il vous plaît, si vous travaillez dans un environnement multilingue (ou même dans tout environnement), préférez utiliser le filtre WMI suivant :

32 bits : SELECT AddressWidth FROM Win32_Processor WHERE AddressWidth="32"
64 bits : SELECT AddressWidth FROM Win32_Processor WHERE AddressWidth="64"

Leave a Reply

Close Menu