Are there Powershell cmdlets that install and remove Windows drivers?

Question:

Note: For this question, when I refer to “Windows drivers” I mean .inf and associated files which can otherwise be installed by right-clicking the .inf and clicking “Install” in Windows Explorer. I do not mean any kind of setup.exe-style executable which might install a driver.


There exists the following:

I have not, however, found a corresponding Powershell Cmdlet that supports installing and uninstalling drivers on the running system. I’m sure I could wrap dpinst.exe in some powershell, but I’d like to avoid mapping command line parameters and parsing output if a more Powershell-native method exists.

Do Powershell Cmdlets exist that install and uninstall Windows drivers on the running system? Is there some other way to install and uninstall Windows drivers using Powershell that does not involve dpinst.exe?

Answer:

Not only are there not PowerShell cmdlets for this, it seems there isn’t even managed code to do it within the .Net framework (what follows is basically a translation of that answer into PowerShell).

Luckily, the .Net framework can call windows APIs through platform invoke (p/invoke), and PowerShell can do so too.

The linked answer shows how to do it in C#. To do it powershell we’ll use the same signature that was generated in that answer, and use it with the Add-Type cmdlet (see example 5) to make it available to your script.

See the MSDN documentation for InstallHinfSection for details on the parameters (particularly the string format).

Source:

Are there Powershell cmdlets that install and remove Windows drivers? by licensed under CC BY-SA | With most appropriate answer!

Leave a Reply