Device Driver Audit Across Domain

Hey All,

I'm looking for a way to gather a complete list of all device drivers installed across our fleets workstations and laptops so that I can build a repository and insert them into a windows image that we could use to deploy across all the different brands and models of machines that we use.

I've used programs like Kaseya to do this before however the price is unreasonable as we're not some MSP dealing with dozens and dozens of customers.

Spiceworks is the next best thing that is a free alternative but it has no way to do exactly what I'm after.

Another alternative would be something like Belarc Advisor but once again too costly just for the purposes of Auditing - disregard free edition as our intended use for be against their tos.

Is it possible to generate this info via some vb script using WMI at all?

Who is Participating?

[Product update] Infrastructure Analysis Tool is now available with Business Accounts.Learn More

I wear a lot of hats...

"The solutions and answers provided on Experts Exchange have been extremely helpful to me over the last few years. I wear a lot of hats - Developer, Database Administrator, Help Desk, etc., so I know a lot of things but not a lot about one thing. Experts Exchange gives me answers from people who do know a lot about one thing, in a easy to use platform." -Todd S.

Gary PattersonVP Technology / Senior Consultant Commented:
The Scripting Guys on Microsoft Technet discuss a nice solution in this article:

Core script is below.  Article also discusses the common technique for running against a remote system.

strComputer = "."
Set objWMIService = GetObject("winmgmts:\\" & strComputer & "\root\cimv2")

Set colItems = objWMIService.ExecQuery("Select * from Win32_PnPSignedDriver")

For Each objItem in colItems
    Wscript.Echo "Device ID: " & objItem.DeviceID
    Wscript.Echo "Device Name: " & objItem.DeviceName
    dtmWMIDate = objItem.DriverDate
    strReturn = WMIDateStringToDate(dtmWMIDate)
    Wscript.Echo "Driver Date: " & strReturn
    Wscript.Echo "Driver Version: " & objItem.DriverVersion
    Wscript.Echo "Is Signed: " & objItem.IsSigned
Function WMIDateStringToDate(dtmWMIDate)
    If Not IsNull(dtmWMIDate) Then
        WMIDateStringToDate = CDate(Mid(dtmWMIDate, 5, 2) & "/" & _
            Mid(dtmWMIDate, 7, 2) & "/" & Left(dtmWMIDate, 4) _
                & " " & Mid (dtmWMIDate, 9, 2) & ":" & _
                    Mid(dtmWMIDate, 11, 2) & ":" & Mid(dtmWMIDate,13, 2))
    End If
End Function

Open in new window

This Technet article that explains the technique of running a WMI script over a number of computers:

Experts Exchange Solution brought to you by

Your issues matter to us.

Facing a tech roadblock? Get the help and guidance you need from experienced professionals who care. Ask your question anytime, anywhere, with no hassle.

Start your 7-day free trial
auscomAuthor Commented:

I've had a play around with this.

Gathers a fair bit more then I need but with a bit of tweaking I think I can get this to run on all machines and report back to a single DB or CSV somewhere on the network.
It's more than this solution.Get answers and train to solve all your tech problems - anytime, anywhere.Try it for free Edge Out The Competitionfor your dream job with proven skills and certifications.Get started today Stand Outas the employee with proven skills.Start learning today for free Move Your Career Forwardwith certification training in the latest technologies.Start your trial today
Operating Systems

From novice to tech pro — start learning today.