Code: }) | Sort-Object Manufacturer, Driver, Version, Name -Unique | Format-Table -AutoSize > Drivers.txt Pause OR Code: }) | Sort-Object Manufacturer, Driver, Version, Name -Unique | Add-Content Driver.txt Pause This work for me, run .ps1 from desktop, as running from C:\ give out-file : Access to the path 'C:\Drivers.txt' is denied.
Manufacturer Fixed. Code: @(Get-WmiObject Win32_SystemDriver | Where-Object { $_.DisplayName -ne $null } |% { [PSCustomObject]@{ Manufacturer = 'Microsoft' Driver = ($_.PathName -split '\\')[-1] Version = ((Get-Item $_.PathName).VersionInfo.FileVersion -replace '^ ' -split ' ')[0] Name = $_.DisplayName } } Get-WmiObject Win32_PnPSignedDriver | Where-Object { $_.FriendlyName -ne $null } |% { [PSCustomObject]@{ Manufacturer = $(if ($_.Manufacturer -notmatch 'Microsoft|Generic|\(') { $_.Manufacturer } else { $_.DriverProviderName }) Driver = $_.InfName Version = $_.DriverVersion Name = $_.FriendlyName } }) | Sort-Object Manufacturer, Driver, Version, Name -Unique | Format-Table -AutoSize Pause OR Code: @(Get-WmiObject Win32_SystemDriver | Where-Object { $_.DisplayName -ne $null } |% { [PSCustomObject]@{ Manufacturer = 'Microsoft' Driver = ($_.PathName -split '\\')[-1] Version = ((Get-Item $_.PathName).VersionInfo.FileVersion -replace '^ ' -split ' ')[0] Name = $_.DisplayName } } Get-WmiObject Win32_PnPSignedDriver | Where-Object { $_.FriendlyName -ne $null } |% { [PSCustomObject]@{ Manufacturer = $(if ($_.Manufacturer -notmatch 'Microsoft|Generic|\(') { $_.Manufacturer } else { $_.DriverProviderName }) Driver = $_.InfName Version = $_.DriverVersion Name = $_.FriendlyName } }) | Sort-Object Manufacturer, Driver, Version, Name -Unique | Add-Content Driver.txt Pause
The latter works - the Driver.txt does not. I made a slight change to the SORT ---- Sort-Object Name, Manufacturer, Driver, Version | Format-Table -AutoSize This is fine, however, it seems to be lacking at least some of the drivers - ex, in Device Mgr I have (under SYSTEM DEVICES) - AMDA00 Interface Manufacturer (also Driver Provider): ASUSTeK Computer Inc. v1.0.1.0 Same for ACPI Fixed Feature Button MS v10.0.19041.1202 This ITEM (not just the MFR) does not show in the results at all! Looking at a few more, it seems to be based on the DEVICE DESCRIPTION or the DRIVER DECRIPTION (which seem to be usually the same) - could we add BOTH those fields in and confirm that? Thanks!!! --- DS
One-liner Code: Get-WmiObject Win32_PnPSignedDriver | Select Manufacturer, InfName, DriverVersion, Description | Format-Table -AutoSize
Ok, so this is almost working! SO close! What is happening with items like - ACPI Fixed Feature Button is that the MFR is listed as (Standard system devices) - which is NOT what I want - the Driver PROVIDER is Microsoft. However, when I try to substitute Provider, I get NOTHING returned Example: Get-WmiObject Win32_PnPSignedDriver | Select Provider, Description, DriverVersion | Sort Description, Provider, DriverVersion | Format-Table -AutoSize (you have to have your PowerShell Window set to a width of ~225, with your original code) --- DS (I feel like I'm going somewhat insane with this ...... ) And yes , re-directing it out like that works nicely too! Get-WmiObject Win32_PnPSignedDriver | Select Manufacturer, Description, DriverVersion | Sort Description, Manufacturer, DriverVersion | Format-Table -AutoSize >C:\drivers.txt Also, DisplayNme does not return ANY values either - even though values are displayed in the Properties ......
In the future as this develops, wouldn't it be nice from the the yet to be added menu of options, a list of depreciated drivers.
Code: Get-WmiObject Win32_PnPSignedDriver | Select Manufacturer, InfName, DriverVersion, Description | ? { $_.Manufacturer -match "Intel" } | Format-Table -AutoSize Get-WmiObject Win32_PnPSignedDriver | Select Manufacturer, InfName, DriverVersion, Description | ? { $_.Manufacturer -match "Realtek" } | Format-Table -AutoSize Spoiler: result Code: Windows PowerShell Copyright (C) Microsoft Corporation. All rights reserved. Install the latest PowerShell for new features and improvements! https://aka.ms/PSWindows PS C:\Windows\system32> Get-WmiObject Win32_PnPSignedDriver | Select Manufacturer, InfName, DriverVersion, Description | ? { $_.Manufacturer -match "Intel" } | Format-Table -AutoSize Manufacturer InfName DriverVersion Description ------------ ------- ------------- ----------- Intel cpu.inf 10.0.20348.1 Intel Processor Intel cpu.inf 10.0.20348.1 Intel Processor Intel machine.inf 10.0.20348.1 Legacy device Intel(R) Corporation oem3.inf 6.16.0.3208 Intel(R) Display Audio Intel oem5.inf 2.0.0.1094 Intel(R) Trusted Execution Engine Interface Intel Corporation oem4.inf 20.19.15.5171 Intel(R) HD Graphics PS C:\Windows\system32> Get-WmiObject Win32_PnPSignedDriver | Select Manufacturer, InfName, DriverVersion, Description | ? { $_.Manufacturer -match "Realtek" } | Format-Table -AutoSize Manufacturer InfName DriverVersion Description ------------ ------- ------------- ----------- Realtek oem12.inf 10.65.421.2023 Realtek PCIe FE Family Controller Realtek oem18.inf 6.0.9273.1 Realtek High Definition Audio Realtek oem17.inf 10.0.22000.20284 EasyCamera Realtek Semiconductor Corp. oem13.inf 10.0.22621.31279 Realtek USB 2.0 Card Reader
Code: PS C:\Windows\system32> Get-WmiObject Win32_PnPSignedDriver | Select Manufacturer, InfName, DriverVersion, Description | ? { $_.Manufacturer -match "Intel" } | Format-Table -AutoSize Manufacturer InfName DriverVersion Description ------------ ------- ------------- ----------- Intel Corporation intelpep.inf 10.0.19041.1266 Intel(R) Power Engine Plug-in Intel cpu.inf 10.0.19041.2728 Intel Processor Intel cpu.inf 10.0.19041.2728 Intel Processor Intel cpu.inf 10.0.19041.2728 Intel Processor Intel cpu.inf 10.0.19041.2728 Intel Processor Intel cpu.inf 10.0.19041.2728 Intel Processor Intel cpu.inf 10.0.19041.2728 Intel Processor Intel cpu.inf 10.0.19041.2728 Intel Processor Intel cpu.inf 10.0.19041.2728 Intel Processor Intel cpu.inf 10.0.19041.2728 Intel Processor Intel cpu.inf 10.0.19041.2728 Intel Processor Intel cpu.inf 10.0.19041.2728 Intel Processor Intel cpu.inf 10.0.19041.2728 Intel Processor Intel cpu.inf 10.0.19041.2728 Intel Processor Intel cpu.inf 10.0.19041.2728 Intel Processor Intel cpu.inf 10.0.19041.2728 Intel Processor Intel cpu.inf 10.0.19041.2728 Intel Processor Intel Corporation oem14.inf 30.100.2132.2 Intel(R) Serial IO GPIO Host Controller - INT3450 Intel oem61.inf 12.19.2.55 Intel(R) Ethernet Connection (7) I219-V INTEL oem3.inf 10.1.16.8 Intel(R) SPI (flash) Controller - A324 Intel(R) Corporation oem25.inf 10.27.0.12 Intel(R) Display-Audio INTEL oem19.inf 10.1.1.36 CannonLake LPC Controller/eSPI Controller - A305 INTEL oem19.inf 10.1.1.36 CannonLake PCI Express Root Port #9 - A330 INTEL oem19.inf 10.1.1.36 CannonLake PCI Express Root Port #1 - A338 INTEL oem19.inf 10.1.1.36 CannonLake PCI Express Root Port #17 - A340 Intel Corporation oem31.inf 17.11.0.1000 Intel(R) 300 Series Chipset Family SATA AHCI Controller Intel oem58.inf 2130.1.15.0 Intel(R) Management Engine WMI Provider Intel oem33.inf 1.63.1155.1 Intel(R) iCLS Client Intel oem0.inf 1.41.2021.121 Intel(R) Dynamic Application Loader Host Interface Intel oem65.inf 2306.4.3.0 Intel(R) Management Engine Interface #1 Intel Corporation oem71.inf 31.0.101.2125 Intel(R) Graphics Command Center Intel Corporation oem70.inf 31.0.101.2125 Intel(R) Graphics Control Panel Intel Corporation oem63.inf 31.0.101.2125 Intel(R) UHD Graphics 630
Did a little bit change to actual code Code: Get-WmiObject Win32_PnPSignedDriver | Select Manufacturer, InfName, DriverVersion, Description | ? { $_.InfName -match "oem" } | Format-Table -AutoSize
Don't know, maybe Code: Get-WmiObject Win32_PnPSignedDriver | Select Manufacturer, InfName, DriverVersion, Description | ? { "InfName like '%oem%'" } | Format-Table -AutoSize