Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- Start-Transcript -Path "c:\Windows\temp\DeleteHPDrivers.log"
- # https://stackoverflow.com/questions/66580801/pnputil-retrieve-each-driver-and-add-to-array-with-psobject
- function getFromDriverStore() {
- $List = New-Object System.Collections.ArrayList
- ((PNPUtil /Enum-Drivers |
- Select-Object -Skip 2) |
- Select-String -Pattern 'Published Name:' -Context 0,7) |
- ForEach {
- if($PSItem.Context.PostContext[4] -like "*Class Version:*"){
- $ClassVersion = $PSItem.Context.PostContext[4] -replace '.*:\s+'
- $DriverVersion = $PSItem.Context.PostContext[5] -replace '.*:\s+'
- $SignerName = $PSItem.Context.PostContext[6] -replace '.*:\s+'
- }else{
- $ClassVersion = "N/A"
- $DriverVersion = $PSItem.Context.PostContext[4] -replace '.*:\s+'
- $SignerName = $PSItem.Context.PostContext[5] -replace '.*:\s+'
- }
- # Split the value into date and version
- $splitValues = $DriverVersion -split " "
- $DriverDate = $splitValues[0]
- $DriverVersionNumber = $splitValues[1]
- $y = New-Object PSCustomObject
- $y | Add-Member -Membertype NoteProperty -Name PublishedName -value (($PSitem | Select-String -Pattern 'Published Name:' ) -replace '.*:\s+')
- $y | Add-Member -Membertype NoteProperty -Name OriginalName -value (($PSItem.Context.PostContext[0]) -replace '.*:\s+')
- $y | Add-Member -Membertype NoteProperty -Name ProviderName -value (($PSItem.Context.PostContext[1]) -replace '.*:\s+')
- $y | Add-Member -Membertype NoteProperty -Name ClassName -value (($PSItem.Context.PostContext[2]) -replace '.*:\s+')
- $y | Add-Member -Membertype NoteProperty -Name ClassGUID -value (($PSItem.Context.PostContext[3]) -replace '.*:\s+')
- $y | Add-Member -Membertype NoteProperty -Name ClassVersion -value $ClassVersion
- $y | Add-Member -Membertype NoteProperty -Name DriverVersionDate -value $DriverDate
- $y | Add-Member -Membertype NoteProperty -Name DriverVersionNumber -value $DriverVersionNumber
- $y | Add-Member -Membertype NoteProperty -Name SignerName -value $SignerName
- $z = $List.Add($y)
- }
- return $List
- }
- Write-Host "Before:"
- # Versjon 17171305019303231 == 7.3.0
- $drvs = Get-PrinterDriver | Where-Object { $_.Name -like 'HP Universal Printing*' -and $_.Name -notlike "HP Universal Printing PCL 5*" -and $_.DriverVersion -lt 17171305019303231 }
- $List = getFromDriverStore
- Write-Host "Print management:"
- $drvs | Select-Object Name | Out-Host
- $drvs | Remove-PrinterDriver -RemoveFromDriverStore
- $drvs2 = $List | Where-Object { $_.ProviderName -eq "HP" -and [version]$_.DriverVersionNumber -lt [version]"61.310.1.25919" -and $_.OriginalName -like "*hpcu*" -and $_.OriginalName -ne "hpcu180t.inf" }
- Write-Host "Windows Driver Store:"
- $drvs2 | Out-Host
- foreach ($drv in $drvs2) {
- pnputil /delete-driver $drv.PublishedName /uninstall /force
- }
- $reg = Get-ChildItem -Path "HKLM:\SYSTEM\CurrentControlSet\Control\Print\Environments\Windows x64\Drivers\Version-3" | Where-Object {
- $_.Name -like "*HP Universal Printing*" -and
- $_.Name -notlike "*HP Universal Printing PCL 5*" }
- $regDelete = @()
- foreach ($entry in $reg) {
- $driverVersion = (Get-ItemProperty -Path $entry.PSPath).DriverVersion
- if ([version]$driverVersion -lt [version]"61.310.1.25919") {
- $regDelete += $entry
- }
- }
- if ($regDelete -ne $null) {
- Write-Host "Manual delete from registry..." -Foregroundcolor yellow
- $regDelete | Out-Host
- $regDelete | Remove-Item -Force
- Restart-Service -Name "Spooler" -Force
- # Versjon 17171305019303231 == 7.3.0
- Get-PrinterDriver | Where-Object { $_.Name -like 'HP Universal Printing*' -and $_.Name -notlike "HP Universal Printing PCL 5*" -and $_.DriverVersion -lt 17171305019303231 } | Remove-PrinterDriver -RemoveFromDriverStore
- $List = getFromDriverStore
- $drvs = $List | Where-Object { $_.ProviderName -eq "HP" -and [version]$_.DriverVersionNumber -lt [version]"61.310.1.25919" -and $_.OriginalName -like "*hpcu*" -and $_.OriginalName -ne "hpcu180t.inf" }
- foreach ($drv in $drvs) {
- pnputil /delete-driver $drv.PublishedName /uninstall /force
- }
- }
- Write-Host " "
- Write-Host "After:"
- # Versjon 17171305019303231 == 7.3.0
- $drvs = Get-PrinterDriver | Where-Object { $_.Name -like 'HP Universal Printing*' -and $_.Name -notlike "HP Universal Printing PCL 5*" -and $_.DriverVersion -lt 17171305019303231 }
- Write-Host "Print management:"
- $drvs | Select-Object Name | Out-Host
- $List = getFromDriverStore
- $drvs = $List | Where-Object { $_.ProviderName -eq "HP" -and [version]$_.DriverVersionNumber -lt [version]"61.310.1.25919" -and $_.OriginalName -like "*hpcu*" -and $_.OriginalName -ne "hpcu180t.inf" }
- Write-Host "Windows Driver Store: "
- $drvs | Out-Host
- # Stop logging
- Stop-Transcript
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement