How I Manage Windows 10 Drivers & Firmware with PowerShell (Without Losing My Mind)
Let’s be honest—driver and firmware management on Windows 10 isn’t glamorous. But if you’ve ever had a fleet of machines randomly drop Wi-Fi or freeze during a BIOS update, you know it’s not something you can ignore either.
I started automating this stuff out of necessity. Back when I was juggling updates across a mix of Dell and HP laptops, I got tired of chasing down version mismatches and support tickets that boiled down to “Have you tried updating the driver?” So I built a PowerShell workflow that now runs quietly in the background—auditing, updating, and logging everything without me babysitting it.
Here’s how I set it up, and what I’ve learned along the way.
Why I Bothered Automating This
- Consistency: I used to avoid automation for drivers because I thought manual installs gave me more control. Turns out, they gave me more headaches.
- Security: Firmware updates aren’t just performance tweaks—they patch vulnerabilities. I’ve seen outdated BIOS versions flagged during security audits.
- Efficiency: Not gonna lie, I was winging it at first. But once I got the scripts dialed in, support tickets dropped noticeably.
My Setup
- Windows 10 Pro and Enterprise clients
- PowerShell 5.1+
- WSUS configured for driver delivery (though I’ve also tested with Windows Update directly)
- Running Hyper-V on a ThinkPad with 32GB RAM for staging
Step-by-Step: What Actually Works
Audit Installed Drivers
Get-WmiObject Win32_PnPSignedDriver |
Select-Object DeviceName, DriverVersion, Manufacturer, DriverDate |
Sort-Object DriverDate -Descending
This gives me a quick snapshot of what’s installed. I run this weekly via Task Scheduler and dump the results to a CSV.
Export Driver Inventory
Get-WmiObject Win32_PnPSignedDriver |
Export-Csv -Path "C:\DriverInventory.csv" -NoTypeInformation
Useful for compliance tracking. I’ve had to pull this during internal audits more than once.
Update Drivers via Windows Update
Install-WindowsUpdate -AcceptAll -AutoReboot
Requires the PSWindowsUpdate module:
Install-Module -Name PSWindowsUpdate -Force
Most guides say to use WSUS, but I’ve found this module more flexible—especially for remote clients.
Install Specific Driver Package
pnputil /add-driver "C:\Drivers\IntelLAN.inf" /install
I use this when I need to push vendor-certified drivers manually. Works well with Intune payloads too.
Firmware Updates via OEM Tools
Each vendor has their quirks. I’ve tested these on dev/staging machines:
- Dell:
Dell Command | PowerShell Provider - HP:
HP Image Assistant - Lenovo:
System Update CLI
Example for Dell:
Import-Module DellBIOSProvider
Get-DellBIOSSettings
Update-DellFirmware -Silent -Reboot
The silent flag is a lifesaver—no user prompts, no confusion.
Bugs & Gotchas
- Dell’s BIOS module sometimes hangs if BitLocker isn’t suspended. Learned that the hard way.
- HP Image Assistant doesn’t always play nice with older EliteBooks—had to fallback to manual EXE installs.
- Lenovo CLI tool throws vague errors if run without admin rights. The logs helped, but only after I dug through them.
Lessons Learned
- Always test in staging. I bricked a VM once by pushing an unverified driver to production.
- Keep a whitelist of approved driver versions. I tag them in the registry for tracking.
- Disable automatic driver updates if you’re using custom packages—Windows Update loves to overwrite them.
- Document everything. I keep update procedures per OEM in a shared OneNote for the team.
Bonus Tips
- Use
Get-WmiObject Win32_BIOSto check firmware versions before and after updates. - Tag machines with update status using WMI or registry keys—makes reporting easier.
- Integrate update scripts into provisioning workflows. I use MDT with PowerShell hooks.
Final Thoughts
Driver and firmware management isn’t flashy, but once you automate it, you’ll wonder why you didn’t do it sooner. It’s one of those “set it and forget it” wins—until something breaks, of course.
Ever had a firmware update go sideways mid-deployment? Or found a driver rollback fixed what the update broke? I’d love to hear how you handle this in your environment.
Let’s swap war stories.