Prodif
Full Member | Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору $dismOut = DISM.exe /Image:C:\Offline /Get-Drivers /all $Lines = $dismOut | select -Skip 10 $Operation = "theName" $Drivers = @() foreach ( $Line in $Lines ) { $tmp = $Line $txt = $($tmp.Split( ':' ))[1] switch ($Operation) { 'theName' { $Name = $txt $Operation = 'theFileName' break } 'theFileName' { $FileName = $txt.Trim() $Operation = 'theEntr' break } 'theEntr' { $Entr = $txt.Trim() $Operation = 'theClassName' break } 'theClassName' { $ClassName = $txt.Trim() $Operation = 'theVendor' break } 'theVendor' { $Vendor = $txt.Trim() $Operation = 'theDate' break } 'theDate' { # change the date format for easy sorting $tmp = $txt.split( '.' ) $txt = "$($tmp[2]).$($tmp[1]).$($tmp[0].Trim())" $Date = $txt $Operation = 'theVersion' break } 'theVersion' { $Version = $txt.Trim() $Operation = 'theNull' $params = [ordered]@{ 'FileName' = $FileName 'Vendor' = $Vendor 'Version' = $Version 'Name' = $Name 'ClassName' = $ClassName 'Date' = $Date 'Entr' = $Entr } $obj = New-Object -TypeName PSObject -Property $params $Drivers += $obj break } 'theNull' { $Operation = 'theName' break } } } Write-Host "All installed third-party drivers" $Drivers | sort Filename | ft Write-Host "Different versions" $last = '' $NotUnique = @() foreach ( $Dr in $($Drivers | sort Filename) ) { if ($Dr.FileName -eq $last ) { $NotUnique += $Dr } $last = $Dr.FileName } $NotUnique | sort FileName | ft Write-Host "Outdated drivers" $list = $NotUnique | select -ExpandProperty FileName -Unique $ToDel = @() foreach ( $Dr in $list ) { Write-Host "duplicate found" -ForegroundColor Yellow $sel = $Drivers | where { $_.FileName -eq $Dr } | sort date -Descending | select -Skip 1 $sel | ft $ToDel += $sel } Write-Host "Drivers to remove" -ForegroundColor Red $ToDel | ft # removing old drivers foreach ( $item in $ToDel ) { $Name = $($item.Name).Trim() Write-Host "deleting $Name" -ForegroundColor Yellow Write-Host "Dism.exe /Remove-Driver /Driver:$Name" -ForegroundColor Yellow Invoke-Expression -Command "Dism.exe /Remove-Driver /Driver:$Name" } pause | Всего записей: 405 | Зарегистр. 25-02-2007 | Отправлено: 17:03 10-05-2019 | Исправлено: Prodif, 18:08 10-05-2019 |
|