🔝 Retour à la Table des matières
L'un des grands avantages de PowerShell est sa capacité à récupérer des informations détaillées sur le matériel de votre ordinateur. Ces informations peuvent être précieuses pour le dépannage, la surveillance des performances ou simplement pour connaître les spécifications de votre système.
Dans cette section, nous allons découvrir comment interroger différents composants matériels à l'aide de PowerShell.
- Connaissances de base en PowerShell (variables, pipeline)
- Droits d'administrateur (certaines commandes peuvent nécessiter des privilèges élevés)
- Vue d'ensemble des outils disponibles
- Informations sur le processeur (CPU)
- Informations sur la mémoire (RAM)
- Informations sur les disques
- Informations sur la carte graphique
- Informations sur la carte mère et le BIOS
- Création d'un rapport système complet
- Exercices pratiques
PowerShell dispose de plusieurs approches pour récupérer des informations matérielles :
Get-CimInstance est la méthode moderne recommandée pour interroger les informations matérielles :
# Syntaxe de base
Get-CimInstance -ClassName <nom_de_classe> [-ComputerName <nom_ordinateur>]💡 Conseil pour débutants :
Get-CimInstanceremplace l'ancienne commandeGet-WmiObjectqui est dépréciée dans PowerShell 7+.
Cette commande simple fournit une vue d'ensemble des informations système :
Get-ComputerInfoPour certaines informations spécifiques, nous pouvons utiliser des classes .NET directement :
[System.Environment]::ProcessorCountGet-CimInstance -ClassName Win32_ProcessorCette commande affiche des informations complètes sur le processeur. Pour un affichage plus concis :
Get-CimInstance -ClassName Win32_Processor | Select-Object Name, NumberOfCores, NumberOfLogicalProcessors, MaxClockSpeed, L2CacheSize, L3CacheSizePour connaître l'utilisation actuelle du CPU :
Get-CimInstance -ClassName Win32_PerfFormattedData_PerfOS_Processor -Filter "Name='_Total'" | Select-Object PercentProcessorTime🔍 Explication : Cette commande affiche le pourcentage d'utilisation global du processeur.
Get-CimInstance -ClassName Win32_PhysicalMemory | Measure-Object -Property Capacity -Sum | ForEach-Object { "RAM Totale: {0:N2} GB" -f ($_.Sum / 1GB) }Get-CimInstance -ClassName Win32_PhysicalMemory | Select-Object Tag, Capacity, Speed, Manufacturer | Format-Table -AutoSizeGet-CimInstance -ClassName Win32_OperatingSystem | Select-Object @{Name="MémoireTotale(GB)";Expression={[math]::Round($_.TotalVisibleMemorySize / 1MB, 2)}}, @{Name="MémoireLibre(GB)";Expression={[math]::Round($_.FreePhysicalMemory / 1MB, 2)}}Get-CimInstance -ClassName Win32_DiskDrive | Select-Object Model, Size, MediaType | Format-Table -AutoSizeGet-CimInstance -ClassName Win32_LogicalDisk -Filter "DriveType=3" | Select-Object DeviceID, @{Name="Taille(GB)";Expression={[math]::Round($_.Size / 1GB, 2)}}, @{Name="EspaceLibre(GB)";Expression={[math]::Round($_.FreeSpace / 1GB, 2)}}, @{Name="% Libre";Expression={[math]::Round(($_.FreeSpace / $_.Size) * 100, 2)}}
⚠️ Attention : Le filtreDriveType=3permet de n'afficher que les disques fixes locaux.
Get-CimInstance -ClassName Win32_VideoController | Select-Object Name, CurrentHorizontalResolution, CurrentVerticalResolution, AdapterRAM, DriverVersionPour afficher la mémoire vidéo en GB au lieu d'octets :
Get-CimInstance -ClassName Win32_VideoController | Select-Object Name, @{Name="VRAM (GB)";Expression={[math]::Round($_.AdapterRAM / 1GB, 2)}}, DriverVersionGet-CimInstance -ClassName Win32_BaseBoard | Select-Object Manufacturer, Product, SerialNumberGet-CimInstance -ClassName Win32_BIOS | Select-Object Manufacturer, Name, Version, SerialNumberVoici un script simple qui génère un rapport HTML des informations principales du système :
# Création d'un rapport système complet
$Rapport = [PSCustomObject]@{
Ordinateur = $env:COMPUTERNAME
Date = Get-Date -Format "dd/MM/yyyy HH:mm"
OS = (Get-CimInstance -ClassName Win32_OperatingSystem).Caption
CPU = (Get-CimInstance -ClassName Win32_Processor).Name
Coeurs = (Get-CimInstance -ClassName Win32_Processor).NumberOfCores
RAM_GB = [math]::Round((Get-CimInstance -ClassName Win32_PhysicalMemory | Measure-Object -Property Capacity -Sum).Sum / 1GB, 2)
Disques = Get-CimInstance -ClassName Win32_LogicalDisk -Filter "DriveType=3" | Select-Object DeviceID, @{Name="Taille(GB)";Expression={[math]::Round($_.Size / 1GB, 2)}}, @{Name="EspaceLibre(GB)";Expression={[math]::Round($_.FreeSpace / 1GB, 2)}}
GPU = (Get-CimInstance -ClassName Win32_VideoController).Name
}
# Exporter en HTML
$Rapport | ConvertTo-Html -Title "Rapport Système" -Body "<h1>Rapport Système - $($env:COMPUTERNAME)</h1>" | Out-File RapportSysteme.html
# Ouvrir le rapport dans le navigateur par défaut
Invoke-Item RapportSysteme.html💡 Astuce : Ce script génère un fichier HTML et l'ouvre automatiquement dans votre navigateur.
Créez un script qui affiche dans la console :
- Le nom de votre processeur
- Le nombre total de coeurs physiques
- La quantité de RAM en GB
- Le modèle de carte graphique principale
Créez un script qui vérifie si l'un de vos disques a moins de 20% d'espace libre et affiche un avertissement le cas échéant.
Modifiez le script de rapport système pour inclure :
- La version du BIOS
- La vitesse des barrettes de RAM
- La température du CPU (nécessite des recherches supplémentaires)
-
Explorez toutes les classes WMI disponibles avec cette commande :
Get-CimClass -Namespace "root\cimv2" | Where-Object CimClassName -like "Win32_*" | Select-Object CimClassName
-
Pour un système de surveillance plus avancé, envisagez d'utiliser les compteurs de performance :
Get-Counter -ListSet * | Where-Object CounterSetName -like "*processor*"
-
Documentez-vous sur les outils de diagnostic comme
Get-Diagnostics(disponible dans PowerShell 7.3+)
L'interrogation du matériel avec PowerShell vous offre un moyen puissant de collecter des informations détaillées sur votre système. Ces informations sont essentielles pour le diagnostic des problèmes, la surveillance des performances ou simplement pour mieux comprendre la configuration de votre ordinateur.
La maîtrise de ces commandes vous permettra de créer des scripts d'audit, des outils de surveillance ou des rapports personnalisés adaptés à vos besoins spécifiques.
⭐ Pour les plus curieux : Les commandes présentées dans ce module fonctionnent principalement sous Windows. Si vous utilisez PowerShell sur Linux ou macOS, certaines classes WMI ne seront pas disponibles, mais vous pourrez utiliser d'autres commandes système pour obtenir des informations similaires.