I. Introduction▲
I-A. Présentation de WMIC▲
Pour présenter brièvement WMIC, je vais citer le site du MSDN (http://msdn.microsoft.com/fr-fr/library/cc784189.aspx) :
« La ligne de commande WMIC (Windows Management Instrumentation Command-line) fournit une interface de ligne de commande simple dans l'infrastructure de gestion Windows (WMI) qui vous permet de tirer parti de WMI pour gérer les ordinateurs exécutant un système d'exploitation de la famille Windows Server 2003. WMIC interagit avec les commandes d'utilitaires et les environnements existants, et la ligne de commande peut facilement être affinée à l'aide de scripts ou d'applications d'administration. ».
En bref, WMI est un outil de gestion d'ordinateur et WMIC est la ligne de commande correspondante.
L'objectif de ce tutoriel n'est pas de vous expliquer en détail ce qu'est le WMI, ni ce que vous pouvez faire avec WMIC. Je me focaliserai sur les quelques commandes qui permettent d'identifier rapidement le matériel présent sur votre machine. Pour aller plus loin, vous trouverez des liens dans le chapitre Conclusion.
Les commandes fonctionneront si les drivers propriétaires de chaque composant sont bien installés. Dans le cas contraire, WMIC renverra des informations génériques sans grande utilité.
Windows est également fourni avec l'outil systeminfo qui permet de récupérer des informations sur certains composants (système d'exploitation, BIOS, processeur, carte réseau…). Cet outil est néanmoins moins complet que les solutions présentées dans ce tutoriel.
I-B. Exécuter WMIC▲
Pour utiliser WMIC, vous devez au préalable ouvrir une console pour y taper les commandes. Vous pouvez ouvrir cette console avec l'une des quatre méthodes suivantes :
- cliquez sur Démarrer, puis tapez « invite » dans la fenêtre « Rechercher les programmes ou les fichiers ». Le menu devrait proposer un lien vers cette invite de commande ;
- cliquez sur Démarrer, puis tapez « cmd » dans la fenêtre « Rechercher les programmes ou les fichiers » ;
- cliquez sur Démarrer > Tous les programmes > Accessoires > Invite de commande ;
- utilisez la combinaison de touches « Windows + R », puis entrez « cmd ».
Pour tester si WMIC est opérationnel, tapez simplement la commande suivante :
wmic /?
Toutes les commandes sont insensibles à la casse des caractères. Vous pouvez tout écrire en lettres minuscules. Pour ma part, j'utiliserai la typologie de la documentation du MSDN.
Le modèle de ligne de commande utilisé dans ce tutoriel aura la forme suivante :
wmic path <classe> get <propriétés> /value
On peut parfois également remplacer le nom d'une classe par un alias. La ligne de commande devient alors :
wmic <alias> get <propriétés> /value
Notez l'absence du mot clé path dans cette seconde syntaxe.
Pour chaque composant, je donnerai le nom de la classe, l'alias éventuel et le lien vers la documentation. Vous aurez donc toutes les informations nécessaires afin d'adapter ces lignes de code à vos besoins spécifiques.
Pour obtenir la liste de toutes les propriétés pour une classe ou un alias donné, il suffit de ne pas mettre de propriété :
wmic path <classe> get /value
ou
wmic <alias> get /value
Pour finir cette introduction rapide à WMIC, il est possible d'exécuter des requêtes plus complexes en utilisant le WMI Query Language (WQL) dérivé du langage SQL. J'utiliserai WQL au chapitre Identifier la carte réseauIdentifier la carte réseau.
Vous trouverez plus d'informations sur WQL dans la documentation Microsoft :
II. Identifier le système d'exploitation (OS)▲
Classe |
Alias |
Documentation |
---|---|---|
Win32_OperatingSystem |
OS |
Bien que le système d'exploitation ne soit pas à proprement parler un composant, il peut être utile d'identifier certains de ces paramètres.
Parmi les propriétés de la classe Win32_OperatingSystem, nous nous intéresserons aux suivantes :
- CSDVersion : le numéro du Service Pack ;
- Manufacturer : le fabricant ;
- Name : le nom du système d'exploitation ;
- OperatingSystemSKU : identifiant unique de la version de Windows ;
- OSArchitecture : architecture (32 ou 64 bits) ;
- Version : numéro de version.
La ligne de commande à exécuter avec le nom de la classe :
wmic path Win32_OperatingSystem get CSDVersion,Manufacturer,Name,OperatingSystemSKU,OSArchitecture,Version /value
La commande similaire avec l'alias :
wmic os get CSDVersion,Manufacturer,Name,OperatingSystemSKU,OSArchitecture,Version /value
Exemple :
CSDVersion=Service Pack 1
Manufacturer=Microsoft Corporation
Name=Microsoft Windows 7 Édition Familiale Premium |C:\Windows|\Device\Harddisk0\Partition2
OperatingSystemSKU=3
OSArchitecture=64 bits
Version=6.1.7601
La valeur 3 de la propriété OperatingSystemSKU indique que c'est une version Home Premium Edition (voir le tableau en annexesWin32_OperatingSystem - Operating System SKU).
III. Identifier le BIOS▲
Classe |
Alias |
Documentation |
---|---|---|
Win32_BIOS |
BIOS |
Comme pour le système d'exploitation, le BIOS n'est pas un composant, il est néanmoins toujours utile de pouvoir identifier aisément la version installée.
Parmi les propriétés de la classe Win32_BIOS, nous nous intéresserons aux suivantes :
- BIOSVersion : version ;
- Manufacturer : fabricant ;
- Name : nom.
La ligne de commande à exécuter avec le nom de la classe :
wmic path Win32_BIOS get BIOSVersion,Manufacturer,Name /value
La commande similaire avec l'alias :
wmic bios get BIOSVersion,Manufacturer,Name /value
Exemple :
BIOSVersion={"ALASKA - 1072009","BIOS Date: 01/03/13 12:43:51 Ver: 18.06"}
Manufacturer=American Megatrends Inc.
Name=BIOS Date: 01/03/13 12:43:51 Ver: 18.06
IV. Identifier la carte mère▲
Classe |
Alias |
Documentation |
---|---|---|
Win32_BaseBoard |
BASEBOARD |
Parmi les propriétés de la classe Win32_BaseBoard, nous nous intéresserons aux suivantes :
- Manufacturer : fabricant ;
- Product : nom ;
- Version : version.
La ligne de commande à exécuter avec le nom de la classe :
wmic path Win32_BaseBoard get Manufacturer,Product,Version /value
La commande similaire avec l'alias :
wmic BaseBoard get Manufacturer,Product,Version /value
Exemple :
Manufacturer=ASUSTeK COMPUTER INC.
Product=P8Z77-M
Version=Rev 1.xx
V. Identifier le processeur (CPU)▲
Classe |
Alias |
Documentation |
---|---|---|
Win32_Processor |
CPU |
Parmi les propriétés de la classe Win32_Processor, nous nous intéresserons aux suivantes :
- Manufacturer : fabricant ;
- Name : nom ;
- SocketDesignation : désignation du socket.
La ligne de commande à exécuter avec le nom de la classe :
wmic path Win32_Processor get Manufacturer,Name,SocketDesignation /value
La commande similaire avec l'alias :
wmic cpu get Manufacturer,Name,SocketDesignation /value
Exemple :
Manufacturer=GenuineIntel
Name=Intel(R) Core(TM) i7-3770K CPU @ 3.50GHz
SocketDesignation=LGA1155
VI. Identifier la mémoire RAM▲
Classe |
Alias |
Documentation |
---|---|---|
Win32_PhysicalMemory |
MEMORYCHIP |
Nous allons voir comment identifier les barrettes de mémoires.
Parmi les propriétés de la classe Win32_PhysicalMemory, nous nous intéresserons aux suivantes :
- Capacity : capacité en octets ;
- FormFactor : format (DIMM, SO-DIMM…) ;
- Manufacturer : fabricant ;
- PartNumber : numéro d'identification donné par le fabricant ;
- SerialNumber : numéro de série.
La ligne de commande à exécuter avec le nom de la classe :
wmic path Win32_PhysicalMemory get Capacity,FormFactor,Manufacturer,PartNumber,SerialNumber /value
La commande similaire avec l'alias :
wmic memorychip get Capacity,FormFactor,Manufacturer,PartNumber,SerialNumber /value
Exemple :
Capacity=8589934592
FormFactor=8
Manufacturer=04CD
PartNumber=F3-1600C9-8GAR
SerialNumber=00000000
Capacity=8589934592
FormFactor=8
Manufacturer=04CD
PartNumber=F3-1600C9-8GAR
SerialNumber=00000000
Nous avons ici deux barrettes de RAM d'une capacité de 8 Go chacune (8589934592 octets).
La valeur 8 de FormFactor indique qu'il s'agit de barrettes DIMM (voir le tableau en annexesWin32_PhysicalMemory - Form Factor). Ce type de barrettes est installé dans les ordinateurs de bureau. Les ordinateur portables (et les mini-PC) utilisent des barrettes au format SO-DIMM. FormFactor prend alors la valeur 12.
VII. Identifier la carte réseau▲
Classe |
Alias |
Documentation |
---|---|---|
Win32_NetworkAdapter |
NICCONFIG |
Plusieurs adaptateurs réseau peuvent être présents sur l'ordinateur. Pour identifier la carte réseau, il faut trouver l'adaptateur qui possède une adresse MAC. Pour ce faire, il faut utiliser la syntaxe WQL avec les mots clés WHERE <propriété> IS NOT NULL.
Parmi les propriétés de la classe Win32_NetworkAdapter, nous nous intéresserons aux suivantes :
- Description : description ;
- ServiceName : nom du service.
La ligne de commande à exécuter avec le nom de la classe :
wmic path Win32_NetworkAdapter where "MACAddress is not Null" get Description,ServiceName /value
La commande similaire avec l'alias :
wmic nicconfig where "MACAddress is not Null" get Description,ServiceName /value
Exemple :
Description=Realtek PCIe GBE Family Controller
ServiceName=RTL8167
On peut également identifier la carte réseau si on connaît son adresse MAC au préalable ou en récupérant cette adresse avec getmac, par exemple.
Dans ce cas, la syntaxe WQL devient :
wmic path Win32_NetworkAdapter where MACAddress="XX:XX:XX:XX:XX:XX" get Description,ServiceName /value
ou
wmic nicconfig where MACAddress="XX:XX:XX:XX:XX:XX" get Description,ServiceName /value
VIII. Identifier la carte graphique (IGP ou GPU)▲
Classe |
Alias |
Documentation |
---|---|---|
Win32_VideoController |
- |
Parmi les propriétés de la classe Win32_VideoController, nous nous intéresserons à la suivante :
- Name : nom.
La ligne de commande à exécuter avec le nom de la classe :
wmic path Win32_VideoController get Name /value
Exemple :
Name=NVIDIA Quadro K2000
Sur un ordinateur portable avec un chipset graphique intégré au processeur (IGP) et une carte graphique dédiée (GPU) :
Name=Intel(R) HD Graphics 3000
Name=NVIDIA GeForce GT 520MX
IX. Identifier le moniteur▲
Classe |
Alias |
Documentation |
---|---|---|
Win32_DesktopMonitor |
DESKTOPMONITOR |
Parmi les propriétés de la classe Win32_DesktopMonitor, nous nous intéresserons aux suivantes :
- MonitorManufacturer : fabricant ;
- MonitorType : type ;
- Name : nom.
La ligne de commande à exécuter avec le nom de la classe :
wmic path Win32_DesktopMonitor get MonitorManufacturer,MonitorType,Name /value
La commande similaire avec l'alias :
wmic desktopmonitor get MonitorManufacturer,MonitorType,Name /value
Exemple :
MonitorManufacturer=IIYAMA CORPORATION
MonitorType=iiyama ProLite PL2206W
Name=iiyama ProLite PL2206W
X. Identifier les disques de stockages (internes ou externes)▲
Classe |
Alias |
Documentation |
---|---|---|
Win32_DiskDrive |
DISKDRIVE |
Parmi les propriétés de la classe Win32_DiskDrive, nous nous intéresserons aux suivantes :
- InterfaceType : type d'interface (IDE, USB…) ;
- Manufacturer : fabricant ;
- MediaType : type de disque (fixe, amovible…) ;
- Model : modèle ;
- SerialNumber : numéro de série ;
- Size : capacité en octets.
La ligne de commande à exécuter avec le nom de la classe :
wmic path Win32_DiskDrive get InterfaceType,Manufacturer,MediaType,Model,SerialNumber,Size /value
La commande similaire avec l'alias :
wmic diskdrive get InterfaceType,Manufacturer,MediaType,Model,SerialNumber,Size /value
Exemple :
InterfaceType=IDE
Manufacturer=(Lecteurs de disque standard)
MediaType=Fixed hard disk media
Model=M4-CT128M4SSD2 ATA Device
SerialNumber=3030303030303030333137303930413231384533
Size=128034708480
InterfaceType=USB
Manufacturer=(Lecteurs de disque standard)
MediaType=External hard disk media
Model=WD My Passport 0730 USB Device
SerialNumber=WXM1E60FT135
Size=500072348160
XI. Conclusion▲
Ce tutoriel vous a présenté une méthode simple et rapide pour identifier les composants de votre ordinateur, grâce à WMIC, outil disponible avec la majorité des distributions Windows modernes.
L'interface de gestion WMI est un outil puissant qui permet d'effectuer bien d'autres tâches que celles présentées dans ce tutoriel.
Voici quelques liens utiles si vous étudiez plus en détail WMI et WMIC :
- Windows Management Instrumentation ;
- Further Information ;
- Ligne de commande WMIC (Windows Management Instrumentation Command-line).
Vous trouverez également des informations dans les ouvrages relatifs à l'administration système sur la page livres de la rubrique Windows.
Pour finir, en cas de problème, vous pourrez chercher ou poser vos questions dans l'un des forums Programmation Windows.
XII. Remerciements▲
Je remercie toopac et sevyc64 pour leurs conseils. Je remercie également jacques_jean pour la relecture orthographique de ce document.
XIII. Annexes▲
XIII-A. Win32_OperatingSystem - Operating System SKU▲
Le tableau suivant donne la signification des valeurs renvoyées par la propriété OperatingSystemSKU de la classe Win32_OperatingSystem.
Valeur |
Désignation |
---|---|
0 |
Undefined |
1 |
Ultimate Edition |
2 |
Home Basic Edition |
3 |
Home Premium Edition |
4 |
Enterprise Edition |
5 |
Home Basic N Edition |
6 |
Business Edition |
7 |
Standard Server Edition |
8 |
Datacenter Server Edition |
9 |
Small Business Server Edition |
10 |
Enterprise Server Edition |
11 |
Starter Edition |
12 |
Datacenter Server Core Edition |
13 |
Standard Server Core Edition |
14 |
Enterprise Server Core Edition |
15 |
Enterprise Server Edition for Itanium-Based Systems |
16 |
Business N Edition |
17 |
Web Server Edition |
18 |
Cluster Server Edition |
19 |
Home Server Edition |
20 |
Storage Express Server Edition |
21 |
Storage Standard Server Edition |
22 |
Storage Workgroup Server Edition |
23 |
Storage Enterprise Server Edition |
24 |
Server For Small Business Edition |
25 |
Small Business Server Premium Edition |
26 |
Home Premium N |
27 |
Enterprise N |
28 |
Ultimate N |
29 |
Web Server, Server Core |
30 |
Windows Essential Business Server Management Server |
31 |
Windows Essential Business Server Security Server |
32 |
Windows Essential Business Server Messaging Server |
33 |
Server Foundation |
34 |
Windows Home Server 2011 |
35 |
Windows Server 2008 without Hyper-V for Windows Essential Server Solutions |
36 |
Server Standard without Hyper-V |
37 |
Server Datacenter without Hyper-V (full installation) |
38 |
Server Enterprise without Hyper-V (full installation) |
39 |
Datacenter Edition without Hyper-V, Server Core |
40 |
Standard Edition without Hyper-V, Server Core |
41 |
Enterprise Edition without Hyper-V, Server Core |
42 |
Hyper-V Server |
43 |
Storage Server Express (core installation) |
44 |
Storage Server Standard (core installation) |
45 |
Storage Server Workgroup (core installation) |
46 |
Storage Server Enterprise (core installation) |
47 |
Starter N |
48 |
Professional |
49 |
Professional N |
50 |
Windows Small Business Server 2011 Essentials |
51 |
Server For SB Solutions |
52 |
Server Solutions Premium |
53 |
Server Solutions Premium (core installation) |
54 |
Server For SB Solutions EM |
55 |
Server For SB Solutions EM |
56 |
Windows MultiPoint Server |
61 |
Windows Essential Server Solution Management SVC |
62 |
Windows Essential Server Solution Additional SVC |
63 |
Small Business Server Premium (core installation) |
64 |
Server Hyper Core V |
72 |
Server Enterprise (evaluation installation) |
76 |
Windows MultiPoint Server Standard (full installation) |
77 |
Windows MultiPoint Server Premium (full installation) |
79 |
Server Standard (evaluation installation) |
96 |
Storage Server Standard (evaluation installation) |
98 |
Windows 8 N |
100 |
Windows 8 Single Language |
101 |
Windows 8 |
103 |
Professional with Media Center |
Source : Win32_OperatingSystem class et GetProductInfo function (lignes grises).
Retour au chapitre Identifier le système d'exploitationIdentifier le système d'exploitation (OS).
XIII-B. Win32_PhysicalMemory - Form Factor▲
Valeur |
Désignation |
---|---|
0 |
Unknown |
1 |
Other |
2 |
SIP |
3 |
DIP |
4 |
ZIP |
5 |
SOJ |
6 |
Proprietary |
7 |
SIMM |
8 |
DIMM |
9 |
TSOP |
10 |
PGA |
11 |
RIMM |
12 |
SODIMM |
13 |
SRIMM |
14 |
SMD |
15 |
SSMP |
16 |
QFP |
17 |
TQFP |
18 |
SOIC |
19 |
LCC |
20 |
PLCC |
21 |
BGA |
22 |
FPBGA |
23 |
LGA |
Source : Win32_PhysicalMemory class.
Retour au chapitre Identifier la mémoire RAMIdentifier la mémoire RAM.