PDA

Показать полную графическую версию : Windows 10 - Powershell (Установка драйверов)


invademan
06-06-2019, 07:34
Друзья. Этот форум меня не раз выручал, надеюсь и в этот раз подкинете решение.

Есть зоопарк компьютеров, ставлю w10, но дрова ставятся за частую не все или ставится стандартный драйвер который работает не так как надо (например видеодрайвер). Есть папка сетевая где собраны на все армы драйвера (формата INF)по моделям. Подскажите как можно с помощью PowerShell организовать автоматическую установку (или обновление) всех драйверов которые не установились или где версия драйвера типа "Стандартный видеодрайвер". Зоопарк очень большой, винда накатывается средствами Акрониса, клонированием.

Нашел такой вот скрипт, откатал его - работает на 5+, но он высасывает драйвера из интернета, а хотелось бы дополнительно чтобы он брал источник из моей сетевой папки с драйверами.


#search and list all missing Drivers

#set Window Title
$host.ui.RawUI
$host.ui.RawUI.WindowTitle = "Driver Updater by harrymc"


Write-Host('adding update source...') -Fore Green
$UpdateSvc = New-Object -ComObject Microsoft.Update.ServiceManager
$UpdateSvc.AddService2("7971f918-a847-4430-9279-4a52d1efe18d",7,"")

$Session = New-Object -ComObject Microsoft.Update.Session
$Searcher = $Session.CreateUpdateSearcher()

$Searcher.ServiceID = '7971f918-a847-4430-9279-4a52d1efe18d'
$Searcher.SearchScope = 1 # MachineOnly
$Searcher.ServerSelection = 3 # Third Party

$Criteria = "IsInstalled=0 and Type='Driver' and IsHidden=0"
Write-Host('Searching Driver-Updates...') -Fore Green
$SearchResult = $Searcher.Search($Criteria)
$SearchResult|ft -a title
$Updates = $SearchResult.Updates

#Show available Drivers
Write-Host('Showing Drivers') -Fore Green
$updates|fl

$Updates | select Title, DriverModel, DriverVerDate, Driverclass, DriverManufacturer | fl

#Download the Drivers from Microsoft

$UpdatesToDownload = New-Object -Com Microsoft.Update.UpdateColl
$updates | % { $UpdatesToDownload.Add($_) | out-null }
Write-Host('Downloading Drivers...') -Fore Green
$UpdateSession = New-Object -Com Microsoft.Update.Session
$Downloader = $UpdateSession.CreateUpdateDownloader()
$Downloader.Updates = $UpdatesToDownload
$Downloader.Download()

#Check if the Drivers are all downloaded and trigger the Installation

$UpdatesToInstall = New-Object -Com Microsoft.Update.UpdateColl
$updates | % { if($_.IsDownloaded) { $UpdatesToInstall.Add($_) | out-null } }

Write-Host('Installing Drivers...') -Fore Green
$Installer = $UpdateSession.CreateUpdateInstaller()
$Installer.Updates = $UpdatesToInstall
$InstallationResult = $Installer.Install()
if($InstallationResult.RebootRequired) {
Write-Host('Reboot required! please reboot now..') -Fore Red
} else { Write-Host('Done..') -Fore Green }

Write-Host('cleaning up sources')
$updateSvc.Services | ? { $_.IsDefaultAUService -eq $false -and $_.ServiceID -eq "7971f918-a847-4430-9279-4a52d1efe18d" } | % { $UpdateSvc.RemoveService($_.ServiceID) }

Write-Host('Press any key to exit ...') -Fore Yellow
$null = $host.UI.RawUI.ReadKey("NoEcho,IncludeKeyDown")

Elven
06-06-2019, 13:41
винда накатывается средствами Акрониса »
MDT или SCCM еще не придумали, жаль...
Я бы не рекомендовал цеплять драйвера из "папки с драйверами", как и раскатывать акронисом тачки. и если по второму пункту возражения уровня "нет отдельной тачки чтобы раскатить MDT" могу принять (хотя и на это можно было бы выделить машину из того же зоопарка и потратить день на его настройку), то по первому есть сказать вот что: откуда может быть 100% уверенность что драйвера находящиеся в папке действительно являются последними актуальными?

Busla
06-06-2019, 15:24
такой вот скрипт, откатал его - работает на 5+, но он высасывает драйвера из интернета, а хотелось бы дополнительно чтобы он брал источник из моей сетевой папки с драйверами. »
это делает WSUS - скачивает драйверы с сайта МС, складывает в папку, выдаёт нуждающимся хостам

invademan
07-06-2019, 07:09
а если по существу вопроса?

Busla
08-06-2019, 14:10
invademan, а по существу вопроса, вы не понимаете о чём пишите - приведённый скрипт и ваша сетевая папка не имеют ничего общего.

DJ Mogarych
10-06-2019, 11:36
В таких случаях хорошо помогает WDS вместо Акрониса - туда можно все эти драйверы добавить.

Ageron
10-06-2019, 14:53
есть много программ, которые обновляют драйвера на компьютере из интернета.
среди бесплатных https://kcsoftwares.com/?dumo

скрипт который вы указали, берет драйвера из WSUS microsoft
установите локальный WSUS он будет брать драйвера из локальной базы, а не скачивать из инета

BelaLugoci
21-11-2019, 10:04
Есть папка сетевая где собраны на все армы драйвера (формата INF)по моделям »
тоже озадачился этой темой. всем, кто советует разворачивать какие-то там системы и прочую лабуду советую отправиться в пешее путешествие.

вот порядок действий что я нашел (пользуемся PowerShell под Админом):
1) сбор драйверов с эталонной машины:

$drivers = Export-WindowsDriver -Online -Destination C:\ps\all\drv
$drivers | ft ProviderName, ClassName, Date, Version -auto | Out-File C:\ps\all\drivers.txt

соответственно указываем свой путь, куда будут складываться драйверы. Потом чистим его от ненужных нам, например я оставил видеодрайверы, звук, но удалил MS XPS и Adobe PDF драйверы. Кстати drivers.txt поможет с описью содержимого, а для опознания листайте .inf

2) в папку с драйверами в корень кладем файлик например instdrv.ps1 с содержимым

Get-ChildItem -File ".\" -Recurse -Filter "*.inf" | ForEach-Object { PNPUtil.exe -i -a $_.FullName}

Всё. Можно такое таскать на флешке и ставить драйверы по необходимости. При остром желании можно написать PS скрипт с меню, где указать конкретные драйверы. Лично я такое использую для 400 ПК в университете, никакие админы не будут мне поднимать инфраструктуру, так что я сам себе оптимизатор.

v79italya
21-11-2019, 20:03
1) сбор драйверов с эталонной машины »
Здравствуйте, BelaLugoci. Правильно ли я понимаю что пунктом один я могу со своего компьютера скачать все драйвера и потом, в случае переустановки Windows, пунктом два смогу установить все скаченные драйвера?
и с программами так можно сделать(установить по списку)?

Busla
22-11-2019, 13:42
BelaLugoci, пока что я вижу, что это вы в бесконечном пешем путешествии бегаете с флешкой между 400 ПК :biggrin:

Iska
25-11-2019, 15:00
Busla, зная уродливые особенности финансирования нашего образования — вот, совсем не удивлюсь.




© OSzone.net 2001-2012