Перейти из форума на сайт.

НовостиФайловые архивы
ПоискАктивные темыТоп лист
ПравилаКто в on-line?
Вход Забыли пароль? Первый раз на этом сайте? Регистрация
Компьютерный форум Ru.Board » Операционные системы » Microsoft Windows » Сценарии для Windows

Модерирует : KLASS, IFkO

 Версия для печати • ПодписатьсяДобавить в закладки
На первую страницук этому сообщениюк последнему сообщению

Открыть новую тему     Написать ответ в эту тему

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
Открыть новую тему     Написать ответ в эту тему

На первую страницук этому сообщениюк последнему сообщению

Компьютерный форум Ru.Board » Операционные системы » Microsoft Windows » Сценарии для Windows


Реклама на форуме Ru.Board.

Powered by Ikonboard "v2.1.7b" © 2000 Ikonboard.com
Modified by Ru.B0ard
© Ru.B0ard 2000-2024

BitCoin: 1NGG1chHtUvrtEqjeerQCKDMUi6S6CG4iC

Рейтинг.ru