PowerShell : Exporter les pilotes tiers de Windows
I. Présentation
Le temps passe, et plus il passe, plus on installe de périphériques divers et variés sur notre machine impliquant l'installation de différents pilotes pour assurer le bon fonctionnement de l'ensemble. Certains pilotes officiels provenant directement du constructeur ne se trouvent pas toujours facilement sur Internet... Dans ce cas, il peut être intéressant de le récupérer sur une machine Windows où l'on sait qu'il est présent.
PowerShell 4.0 intègre un commandlet nommé "Export-WindowsDriver" et qui permet d'exporter les fichiers .inf de l'ensemble des pilotes tiers (Third-party drivers) présent sur une machine Windows. C'est d'ailleurs ce que nous allons voir dans ce tutoriel.
II. Procédure
Commencez par ouvrir une console PowerShell en tant qu'Administrateur, sinon vous ne pourrez pas exporter les pilotes. Nous allons exporter l'ensemble des pilotes non-Microsoft (tiers) vers un dossier : C:\ThirdPartyDrivers
Pour cela, saisissez cette commande :
$Export = Export-WindowsDriver -Online -Destination "C:\ThirdPartyDrivers"
L'option Online permet d'indiquer que l'on souhaite effectuer l'opération directement sur l'installation de Windows en cours de fonctionnement. En fait, ce commandlet est étroitement lié à l'utilitaire DISM.
Si l'on se rend dans le répertoire cité précédemment, on peut voir la présence de nombreux répertoires correspondant aux pilotes :
Là, je sais ce que vous vous dîtes : comment retrouver mon pilote parmi cet ensemble de dossiers ?
Pour les retrouver, il va falloir malgré tout chercher un peu, mais pour s'aider voici une commande PowerShell intéressante où l'on va afficher les valeurs contenues dans la variable $Export utilisé précédemment :
$Export | ft OriginalFileName, ClassName, ProviderName, Version -AutoSize
On obtiendra un résultat comme ceci :
Le champ "OriginalFileName" sélectionné comprend le chemin vers le fichier .inf du pilote. Ce chemin est en fait très semblable à celui de notre export, je m'explique.
La racine est toujours la même à savoir "C:\Windows\System32\DriverStore\FileRepository\" alors que pour notre export la racine est "C:\ThirdPartyDrivers\". Cela signifie qu'en repérant le driver qui nous intéresse dans la sortie PowerShell, on pourra retrouver facilement le dossier correspondant dans notre export puisqu'il porte le même nom.
Par exemple :
Le chemin...
"C:\Windows\System32\DriverStore\FileRepository\prnms001.inf_amd64_4fa1863520b2418e\"
...Deviendra
"C:\ThirdPartyDrivers\prnms001.inf_amd64_4fa1863520b2418e\"
Après, vous pouvez personnaliser la sortie selon les informations que vous souhaitez obtenir. On peut aussi imaginer rechercher uniquement les pilotes émanant du constructeur Intel :
$Export | Where{ $_.ProviderName -Match "Intel" } |ft OriginalFileName, ClassName, ProviderName, Version -AutoSize
Comme le montre la commande ci-dessus, il suffit d'ajouter une condition afin de filtrer les résultats par rapport au "ProviderName".
Note : Il est à noter que pour certains pilotes ce sera indiqué "Intel", d'autres "Intel Corporation" ou encore "Intel (R) Corporation". Le fait d'employer la clause "match" permet de prendre en compte ces différentes variantes puisque l'on cherche la présence du mot "Intel".
Pour obtenir de l'aide sur les différentes options, consultez le TechNet "Export-WindowsDriver" . Il est à noter également la présence du commandlet Get-WindowsDriver qui permet de lister les pilotes tout simplement.