- PowerShell Il vous permet de lister, de filtrer et d'exporter conducteurs avec des cmdlets telles que Get-WmiObject et Get-WindowsDriver.
- requête du pilote, le Administrateur de l'appareil et SCCM (Get-CMDriver) complètent l'inventaire des contrôleurs.
- Certains pilotes chargés dynamiquement nécessitent des outils supplémentaires tels que WinDbg ou Verifier.
- Des modules comme PSWindowsUpdate et des utilitaires externes facilitent la mise à jour et le maintien à jour des pilotes.
Dans les environnements Windows, contrôler quels pilotes sont installés et quelle version chacun possède C'est essentiel pour maintenir la stabilité du système, résoudre les problèmes d'écran bleu ou préparer les migrations. PowerShell est devenu un outil incroyablement pratique pour effectuer ce type d'inventaire sans avoir à parcourir le Gestionnaire de périphériques un par un.
Vous verrez dans les lignes qui suivent Comment lister les contrôleurs depuis PowerShell de différentes manières, et comment les exporter pour analyser calmement les fichiers et identifier les différences avec les autres. commandes como driverquery ou des outils graphiques, et même comment gérer des scénarios plus avancés tels que les images hors ligne ou les pilotes chargés dynamiquement.
Qu'est-ce qu'un pilote et pourquoi voudriez-vous le lister depuis PowerShell ?

Sous Windows, un contrôleur ou un pilote est un petit bloc de logiciel qui sert d'intermédiaire entre le système d'exploitation et un composant de matériel (carte graphique, chipset, stockagepériphériques USBetc.). Bien que le code qu'ils occupent ne soit pas énorme, leur impact sur la stabilité du système est gigantesque.
Lorsqu'un facteur critique (par exemple, stockage, réseau, graphique ou chipset) des dysfonctionnements, peuvent provoquer des plantages, des pertes de performance et même écrans bleus (BSOD)C’est pourquoi disposer d’une liste claire des pilotes installés et de leur version est si utile lorsque vous corrigez des bugs ou préparez une mise à jour majeure.
Avant de vous précipiter pour changer, désinstaller ou revenir à une version antérieure de vos pilotes, il est judicieux de… Minimisez les risques grâce à un point de restauration système.Vous pourrez ainsi revenir en arrière si une mise à jour de pilote échoue et que l'ordinateur commence à se comporter étrangement ou ne démarre même plus correctement.
En plus du restaurant, il est conseillé Sauvegardez vos données importantes (documents, photos, projets de travail, etc.), surtout si vous allez manipuler les pilotes de stockage, car une erreur peut empêcher le système de monter correctement les disques ou corrompre les informations.
Commande de base en PowerShell pour lister les pilotes installés
La méthode la plus directe pour obtenir un inventaire des contrôleurs à partir de PowerShell est s'appuyer sur WMIL'une des commandes les plus couramment utilisées est :
Get-WmiObject Win32_PnPSignedDriver | Select DeviceName, DriverVersion
Avec cette cmdlet, PowerShell interroge la classe WMI Win32_PnPSignedDriver et renvoie une liste des pilotes PnP signés, ainsi que le nom du périphérique et la version du pilote que le système lui associe actuellement.
Si vous souhaitez obtenir un peu plus de contexte sur chaque conducteur, vous pouvez ajouter des champs comme le nom convivial, date de publication ou fabricant. Par exemple:
Get-WmiObject Win32_PnPSignedDriver | Select DeviceName, FriendlyName, Manufacturer, DriverVersion, DriverDate
Cette consultation vous permettra d'obtenir Informations beaucoup plus complètes pour chaque entréeCela vous permet de détecter les versions plus anciennes, les fabricants spécifiques ou les pilotes qui n'ont pas été mis à jour depuis des années.
Comment exporter la liste des pilotes vers un fichier (TXT ou CSV)
Dans la pratique, la simple consultation de la liste à l'écran est rarement suffisante. La méthode la plus pratique consiste à… enregistrer le résultat dans un fichier pour l'analyser dans Excel, le partager avec l'équipe ou le conserver comme instantané de l'état du système avant toute modification, par exemple, avant supprimer les anciens pilotes.
Si vous n'avez besoin que d'une liste en texte brut rapide, vous pouvez rediriger la sortie vers un fichier :
Get-WmiObject Win32_PnPSignedDriver | Select DeviceName, DriverVersion > C:\drivers.txt
Cette commande crée un fichier C:\drivers.txt Avec une liste simple des appareils et de leurs versions. Idéal pour une consultation rapide ou pour joindre facilement un document à un rapport.
Si vous recherchez une solution plus facile à gérer pour le filtrage et le tri, la meilleure option est d'utiliser CSV et l'applet de commande Export-CSVUn exemple très courant serait :
Get-WmiObject Win32_PnPSignedDriver | Select DeviceName, FriendlyName, DriverVersion, DriverDate | Export-CSV -Path "./MisDrivers.csv" -NoTypeInformation
Avec cette commande, un fichier nommé MesDrivers.csv que vous pouvez ouvrir dans Excel ou tout autre tableur. Trier par version, filtrer par date du pilote, rechercher des fabricants spécifiques, etc.
Bien qu'il soit parfois dit que PowerShell « n'autorise pas l'exportation » de la liste des pilotes, en réalité Oui, il peut être exporté sans problème. Utilisez la redirection de sortie ou l'exportation CSV, comme vous venez de le voir. Vous pourrez ensuite copier, coller ou exploiter ces informations où vous le souhaitez.
Filtrer les pilotes par fabricant, nom ou texte spécifique
Normalement, vous ne voudrez pas afficher tous les pilotes en même temps, mais plutôt vous concentrer sur un fabricant ou un type de périphérique spécifique. Pour cela, vous pouvez enchaînement de filtres avec Where-Object concernant les propriétés de chaque pilote.
Par exemple, si vous souhaitez conserver uniquement les pilotes pour IntelVous pourriez faire quelque chose d'aussi simple que :
Get-WmiObject Win32_PnPSignedDriver | Select DeviceName, DriverVersion | Where-Object { $_.DeviceName -like "*Intel*" }
Cette commande parcourt toutes les entrées renvoyées par WMI et Il ne conserve que ceux dont le nom de périphérique contient la chaîne « Intel ».L'utilisation de l'astérisque comme caractère générique vous permet de rechercher des correspondances partielles n'importe où dans le texte.
On peut utiliser la même idée pour localiser les pilotes liés à une application ou à un type de matériel spécifique, par exemple pour mettre à jour les pilotes USBSi vous connaissez une partie du nom, le fabricant ou un schéma du trajet, vous pouvez adapter le filtre à la propriété la plus confortable dans chaque cas.
Afficher les pilotes à partir du Gestionnaire de périphériques et d'autres outils Windows
Bien que PowerShell soit très puissant pour automatiser et exporter des listes, Windows offre toujours outils graphiques classiques pour la gestion des contrôleurs qui doit être connu et combiné avec le chemin de commande.
Le premier point de référence est le Administrateur de l'appareilVous pouvez y accéder en cliquant avec le bouton droit sur « Ce PC » et en choisissant « Gérer », ou plus rapidement en utilisant le menu contextuel du bouton Démarrer (Windows + X). Vous y verrez une arborescence présentant toutes les catégories de matériel installées sur le système.
Les appareils présentant des problèmes d'installation ou de fonctionnement apparaissent souvent avec une icône d'avertissement jauneSi vous double-cliquez sur l'un d'eux, la fenêtre des propriétés s'ouvre, où vous pouvez vérifier l'état du périphérique et accéder à l'onglet « Pilote ».
Dans cet onglet, vous trouverez des options telles que : « Détails du pilote », « Mettre à jour le pilote », « Restaurer le pilote précédent », « Désactiver » ou « Désinstaller »Ces actions vous permettent de consulter les fichiers du pilote, de rechercher de nouvelles versions, de revenir à une version précédente, de désactiver le périphérique sans le supprimer ou de supprimer complètement le pilote du système.
En plus de ces outils, Windows inclut la commande driverquery à utiliser à partir du symbole du système (CMD). En cours d'exécution driverquery Vous obtiendrez une liste de tous les pilotes installés, et avec driverquery /v Vous verrez des informations plus détaillées, telles que l'utilisation de la mémoire, la date de compilation ou l'état.
driverquery et sa relation avec PowerShell
La commande driverquery est très flexible et permet Afficher différentes vues de l'état du conducteurPar exemple, si vous souhaitez lister uniquement les pilotes signés de manière plus détaillée, vous pouvez exécuter :
driverquery /si
Ce mode affiche conducteurs signés avec des informations utiles supplémentaires pour les audits de sécurité ou les contrôles d'intégrité. Et vous pouvez toujours consulter driverquery /? pour consulter tous les paramètres disponibles et ajuster le résultat selon vos besoins.
L'un des avantages de driverquery est que Vous pouvez l'intégrer à PowerShell en utilisant ConvertFrom-CSV.Si vous générez la sortie au format CSV et la redirigez vers PowerShell, vous obtiendrez des objets manipulables depuis PowerShell. Voici un exemple classique :
driverquery.exe /v /fo csv | ConvertFrom-CSV | Select-Object "Display Name", "Start Mode", "Paged Pool(bytes)", Path
Avec cela, vous combinez La puissance de driverquery avec la manipulation de données PowerShellSélectionnez uniquement les colonnes qui vous intéressent : nom d’affichage, mode de démarrage, mémoire paginée et chemin du pilote sur le disque. Ceci est utile lorsque vous souhaitez filtrer par types spécifiques, tels que : pilotes graphiques.
Il convient de noter que les requêtes de pilote et certaines requêtes WMI standard se concentrent principalement sur conducteurs inscrits dans le système, dont beaucoup ont été chargés dans le Botte ou gérés via le registre à l'emplacement HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services. Certains pilotes injectés dynamiquement lors de l'exécution peuvent ne pas figurer dans ces listes.
Lister les pilotes depuis PowerShell avec Get-WindowsDriver
Pour des scénarios plus avancés, notamment lors de l'utilisation de Images hors ligne Windows (par exemple, pour les WIM montés), l'applet de commande est très utile Obtenir le pilote Windows, qui fait partie des outils DISM accessibles depuis PowerShell.
Cette cmdlet permet d'afficher des informations sur les packages de pilotes, aussi bien pour l'installation Windows en cours d'exécution que pour une image montée dans un dossier. La syntaxe principale se divise en deux modes d'utilisation principaux : hors ligne et en ligne.
Pour une image hors ligne montée dans un dossierLa forme générale serait :
Get-WindowsDriver -Path "C:\offline"
Et pour agir contre le système en marche, vous utiliseriez le paramètre -En ligne:
Get-WindowsDriver -Online
Sans paramètres supplémentaires, Get-WindowsDriver renvoie la liste des pilotes tiers présent dans l'image. Si vous ajoutez le modificateur -ToutVous constaterez également que les pilotes par défaut sont inclus par défaut dans Windows.
Paramètres clés de Get-WindowsDriver
L'un des paramètres les plus importants est -Chauffeurqui vous permet de spécifier un fichier .inf spécifique ou un dossier de fichiers .inf Pour obtenir des informations détaillées sur ces pilotes, si vous indiquez un dossier, les fichiers .inf qui ne sont pas des packages de pilotes valides seront automatiquement ignorés.
Lorsque vous travaillez avec une image hors ligne, le paramètre -Chemin spécifie le chemin racine de l'image montée. Si le dossier Windows ne se trouve pas à ce niveau racine, vous pouvez utiliser -Répertoire Windows pour spécifier le sous-dossier relatif où il se trouve.
Paramètre -SystemDrive Il est utilisé dans des scénarios plus spécifiques, par exemple lors de l'utilisation de Windows PE lorsque le gestionnaire de démarrage se trouve sur une partition différente. Dans ce cas, il permet de spécifier le lecteur contenant les fichiers BootMgr à utiliser.
Concernant le journal d'activité, le paramètre -LogPath Il vous permet de définir le chemin d'accès complet au fichier journal. Si vous ne le modifiez pas, le chemin par défaut est utilisé. %WINDIR%\Logs\Dism\dism.logou, sous Windows PE, l'espace de travail en RAM. Par ailleurs, -LogLevel détermine le niveau de détail du journal, avec des valeurs allant des seules erreurs à l'inclusion d'informations de débogage.
Enfin, le paramètre - Répertoire Scratch Il s'agit du dossier temporaire où les fichiers sont extraits lors des opérations de service. Il doit s'agir d'un chemin local et, une fois l'opération terminée, le fichiers temporaires Ils sont automatiquement éliminés sans laisser de résidus.
Exemples pratiques avec Get-WindowsDriver
Pour afficher rapidement tous les pilotes de votre installation Windows actuelle, vous pouvez exécuter :
Get-WindowsDriver -Online -All
Cette commande affichera tous les pilotes (système et tiers) présent dans l'image en cours d'exécution. C'est un moyen très direct de voir quels paquets sont installés sans utiliser WMI ni le Gestionnaire de périphériques.
Si vous travaillez avec un image montée dans C:\offline Et si vous souhaitez uniquement vérifier les pilotes tiers, vous pouvez procéder comme suit :
Get-WindowsDriver -Path "C:\offline"
Si vous souhaitez un rapport détaillé d'un pilote OEM spécifique au sein de cette image, il vous suffit de spécifier le fichier .inf :
Get-WindowsDriver -Path "C:\offline" -Driver "OEM1.inf"
Vous pouvez même accéder à un fichier .inf situé dans un chemin d'accès spécifique au pilote, par exemple :
Get-WindowsDriver -Path "C:\offline" -Driver "C:\drivers\Usb\Usb.inf"
Dans tous ces cas, Get-WindowsDriver renvoie des objets que vous pouvez rediriger vers Select-Object, Where-Object ou Export-CSV pour filtrer, trier ou exporter les informations au format qui vous convient le mieux.
PowerShell et SCCM : Get-CMDriver pour les catalogues de pilotes
Lorsque vous gérez un environnement d'entreprise avec Gestionnaire de configuration (SCCM)Vous vous intéressez non seulement aux pilotes présents sur chaque ordinateur, mais aussi au catalogue centralisé de pilotes que SCCM gère pour le déploiement d'images et de packages.
C’est dans ce contexte que l’applet de commande entre en jeu. Obtenir-CMDriver, qui sert à Récupérer les informations des pilotes de périphériques gérés par Configuration ManagerCette cmdlet possède plusieurs signatures selon ce que vous souhaitez interroger : par nom, par identifiant numérique, par package de pilotes ou par catégorie administrative.
La syntaxe de base comprend des variantes telles que :
Get-CMDriver
Get-CMDriver -DriverPackageId <String>
Get-CMDriver -DriverPackageName <String>
Get-CMDriver -Id <Int32>
Get-CMDriver -InputObject <IResultObject>
Grâce à ces paramètres, vous pouvez orienter vos requêtes vers le catalogue SCCM, en filtrant par nom du pilote, identifiant, packages associés ou catégories administratives que vous avez définies pour organiser vos contrôleurs.
Exemples avec Get-CMDriver
Si vous connaissez le nom d'un pilote spécifique, par exemple « Surface Serial Hub Driver », vous pouvez obtenir ses détails avec :
Get-CMDriver -Name "Surface Serial Hub Driver"
Lorsque vous devez vérifier plusieurs pilotes partageant le même préfixe dans leur nom (comme toute la famille de pilotes Surface) et que vous souhaitez uniquement afficher certaines propriétés pertinentes, vous pouvez utiliser une commande comme :
Get-CMDriver -Fast -Name "Surface*" | Select-Object LocalizedDisplayName, DriverVersion, DriverDate
le modificateur -Rapide Cela réduit la quantité d'informations récupérées et accélère la requête, ce qui est particulièrement perceptible dans les catalogues volumineux. Ensuite, avec Select-Object, Vous ne conservez que les colonnes qui vous sont utiles. pour votre analyse.
Si vous gérez des catégories administratives (par exemple, une catégorie « Surface » où vous regroupez tous ces contrôleurs), vous pouvez chaîner la récupération des catégories et des pilotes comme ceci :
$category = Get-CMCategory -Name "Surface"
Get-CMDriver -Fast -AdministrativeCategory $category
Dans ce cas, vous stockez d'abord la catégorie dans une variable, puis vous demandez à Get-CMDriver de vous la renvoyer. tous les contrôleurs associés à cette catégorie, un outil très utile pour maintenir une vue logique de vos contrôleurs dans SCCM.
Limitations lors de la liste des pilotes chargés dynamiquement
Les pilotes ne se comportent pas tous de la même manière. Il existe des outils, comme certains de la suite. Sysinternals (par exemple, Process Explorer ou handle.exe)qui injectent dynamiquement les pilotes dans le noyau lors de leur exécution, sans les enregistrer comme des services traditionnels chargés au démarrage.
Un exemple typique est celui du conducteur procexp152.sys (ou des versions antérieures telles que procexp113.sys), associées à Process Explorer. Ce type de pilote peut ne pas apparaître dans les requêtes standard de Get-WmiObject Win32_SystemDrivercar ces requêtes s'appuient sur des informations provenant des services de registre (CurrentControlSet\Services) et reflètent généralement principalement les pilotes chargés avec le système.
De même, La requête de pilote peut ne pas lister tous les pilotes injectés dynamiquement.Si vous devez déboguer des écrans bleus de la mort (BSOD) ou des comportements anormaux causés par des outils tiers qui chargent leurs propres pilotes, vous devrez peut-être recourir à d'autres méthodes.
Parmi ces alternatives, on trouve examiner vidages de mémoire du noyau avec des outils comme WinDbg, ou utilisez des utilitaires comme verifier.exeLe vérificateur de pilotes vous permet de sélectionner les pilotes que vous souhaitez surveiller et de détecter les comportements instables, mais l'interface graphique offre plus d'options d'énumération que la version en ligne de commande, qui se concentre sur l'interrogation et la configuration de la vérification.
En bref, pour un inventaire général et pour la plupart des besoins administratifs, PowerShell, WMI et Get-WindowsDriver couvrent parfaitement les besoins de base.Toutefois, dans les cas extrêmes de débogage de pilotes chargés à chaud, vous devrez utiliser des outils d'analyse du noyau en complément.
Mettez à jour les pilotes avec PowerShell en utilisant PSWindowsUpdate.
En plus de lister les pilotes, de nombreux administrateurs utilisent PowerShell pour automatiser les mises à jour des pilotes via Windows Update et aussi pour mise à jour des pilotes audioUne méthode couramment utilisée consiste à utiliser le module PSWindowsUpdate, qui étend les cmdlets de mise à jour standard.
Le flux habituel passe par autoriser temporairement l'exécution de scripts signésInstallez le module, puis demandez les mises à jour des pilotes directement auprès des serveurs Microsoft.
Un ensemble de commandes typique pourrait être :
Set-ExecutionPolicy -Scope Process -ExecutionPolicy Bypass
Install-Module PSWindowsUpdate
Import-Module PSWindowsUpdate
Get-WindowsUpdate
Get-WindowsUpdate -MicrosoftUpdate -Category Driver -Install -AutoReboot
Cette séquence permet l'exécution de scripts pour la session en cours, installe et importe le module PSWindowsUpdate. Vous vérifiez quelles mises à jour sont disponibles. Enfin, vous demandez leur installation depuis la catégorie « Pilotes » via Microsoft Update, en autorisant le redémarrage automatique du système si nécessaire.
Vous pouvez également élargir la portée en utilisant une commande qui installe toutes les mises à jour détectées par Microsoft Update et redémarre sans intervention, par exemple :
Get-WindowsUpdate -MicrosoftUpdate -Install -AutoReboot
Cette méthode de travail est particulièrement pratique dans grands parcs d'équipesC’est dans ce contexte qu’il est judicieux d’uniformiser les versions des pilotes sans les modifier une par une. Toutefois, il est toujours recommandé de s’appuyer sur un inventaire préalable des pilotes et, dans les environnements critiques, de réaliser des tests auprès d’un groupe pilote avant le déploiement à l’échelle de l’organisation.
Écrivain passionné par le monde des octets et de la technologie en général. J'aime partager mes connaissances à travers l'écriture, et c'est ce que je vais faire dans ce blog, vous montrer toutes les choses les plus intéressantes sur les gadgets, les logiciels, le matériel, les tendances technologiques et plus encore. Mon objectif est de vous aider à naviguer dans le monde numérique de manière simple et divertissante.
