-
Notifications
You must be signed in to change notification settings - Fork 2
Open
Labels
featureNew enhancements and features.New enhancements and features.
Description
<#PSScriptInfo
.VERSION 1.0
.GUID 373d0e75-bee5-4ebe-8dbf-c476e96d5fe1
.AUTHOR jimmy
.COMPANYNAME
.COPYRIGHT
.TAGS
.LICENSEURI
.PROJECTURI
.ICONURI
.EXTERNALMODULEDEPENDENCIES
.REQUIREDSCRIPTS
.EXTERNALSCRIPTDEPENDENCIES
.RELEASENOTES
.PRIVATEDATA
#>
<#
.DESCRIPTION
Delete unused drivers
#>
Param(
[Parameter()]
[switch]$WhatIf
)
$ErrorActionPreference = "Stop"
$Drivers = Get-WindowsDriver -Online -All | Where-Object -FilterScript {$_.Driver -like 'oem*inf'} | Select-Object -Property Driver, ClassDescription, ProviderName, Date, Version
$OriginalFileName = @{
Name = "OriginalFileName"
Expression = {$_.OriginalFileName | Split-Path -Leaf}
}
$Date = @{
Name = "Date"
Expression = {$_.Date.Tostring().Split("")[0]}
}
$AllDrivers = Get-WindowsDriver -Online -All | Where-Object -FilterScript {$_.Driver -like 'oem*inf'} | Select-Object -Property $OriginalFileName, Driver, ClassDescription, ProviderName, $Date, Version
Write-Verbose "`nAll installed third-party drivers" -Verbose
($AllDrivers | Sort-Object -Property ClassDescription | Format-Table -AutoSize -Wrap | Out-String).Trim()
$DriverGroups = $AllDrivers | Group-Object -Property OriginalFileName | Where-Object -FilterScript {$_.Count -gt 1}
Write-Verbose "`nDuplicate drivers" -Verbose
($DriverGroups | ForEach-Object -Process {$_.Group | Sort-Object -Property Date -Descending | Select-Object -Skip 1} | Format-Table | Out-String).Trim()
$DriversToRemove = $DriverGroups | ForEach-Object -Process {$_.Group | Sort-Object -Property Date -Descending | Select-Object -Skip 1}
Write-Verbose "`nDrivers to remove" -Verbose
($DriversToRemove | Sort-Object -Property ClassDescription | Format-Table | Out-String).Trim()
If ($WhatIf)
{
Write-Verbose "`nWhatIf switch is set. No drivers will be removed" -Verbose
Exit
} else {
Write-Verbose "`nWhatIf switch is not set. Drivers will be removed" -Verbose
ForEach ($item in $DriversToRemove) {
$Name = $($item.Driver).Trim()
& pnputil.exe /delete-driver "$Name" /force
}
}Metadata
Metadata
Assignees
Labels
featureNew enhancements and features.New enhancements and features.