Компьютерный форум OSzone.net  

Компьютерный форум OSzone.net (http://forum.oszone.net/index.php)
-   Скриптовые языки администрирования Windows (http://forum.oszone.net/forumdisplay.php?f=102)
-   -   Windows 10 - Powershell (Установка драйверов) (http://forum.oszone.net/showthread.php?t=340807)

invademan 06-06-2019 07:34 2874553

Windows 10 - Powershell (Установка драйверов)
 
Друзья. Этот форум меня не раз выручал, надеюсь и в этот раз подкинете решение.

Есть зоопарк компьютеров, ставлю 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 2874625

Цитата:

Цитата invademan
винда накатывается средствами Акрониса »

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

Busla 06-06-2019 15:24 2874654

Цитата:

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

это делает WSUS - скачивает драйверы с сайта МС, складывает в папку, выдаёт нуждающимся хостам

invademan 07-06-2019 07:09 2874735

а если по существу вопроса?

Busla 08-06-2019 14:10 2874875

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

DJ Mogarych 10-06-2019 11:36 2875040

В таких случаях хорошо помогает WDS вместо Акрониса - туда можно все эти драйверы добавить.

Ageron 10-06-2019 14:53 2875067

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

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

BelaLugoci 21-11-2019 10:04 2897382

Цитата:

Цитата invademan
Есть папка сетевая где собраны на все армы драйвера (формата 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 2897446

Цитата:

Цитата BelaLugoci
1) сбор драйверов с эталонной машины »

Здравствуйте, BelaLugoci. Правильно ли я понимаю что пунктом один я могу со своего компьютера скачать все драйвера и потом, в случае переустановки Windows, пунктом два смогу установить все скаченные драйвера?
и с программами так можно сделать(установить по списку)?

Busla 22-11-2019 13:42 2897522

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

Iska 25-11-2019 15:00 2897925

Busla, зная уродливые особенности финансирования нашего образования — вот, совсем не удивлюсь.


Время: 03:53.

Время: 03:53.
© OSzone.net 2001-