PowerShell - Windows 10 - Powershell (Установка драйверов)

Аватара пользователя
invademan

PowerShell - Windows 10 - Powershell (Установка драйверов)

Сообщение invademan »

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



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

Re: PowerShell - Windows 10 - Powershell (Установка драйверов)

Сообщение Elven »

Цитата invademan:



винда накатывается средствами Акрониса
PowerShell - Windows 10 - Powershell (Установка драйверов)




MDT или SCCM еще не придумали, жаль...

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

Re: PowerShell - Windows 10 - Powershell (Установка драйверов)

Сообщение Iska »

Цитата invademan:



такой вот скрипт, откатал его - работает на 5+, но он высасывает драйвера из интернета, а хотелось бы дополнительно чтобы он брал источник из моей сетевой папки с драйверами.
PowerShell - Windows 10 - Powershell (Установка драйверов)




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

Re: PowerShell - Windows 10 - Powershell (Установка драйверов)

Сообщение invademan »

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

Re: PowerShell - Windows 10 - Powershell (Установка драйверов)

Сообщение DJ Mogarych »

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

Re: PowerShell - Windows 10 - Powershell (Установка драйверов)

Сообщение Ageron »

Цитата invademan:



Есть папка сетевая где собраны на все армы драйвера (формата INF)по моделям
PowerShell - Windows 10 - Powershell (Установка драйверов)




тоже озадачился этой темой. всем, кто советует разворачивать какие-то там системы и прочую лабуду советую отправиться в пешее путешествие.



вот порядок действий что я нашел (пользуемся 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 ПК в университете, никакие админы не будут мне поднимать инфраструктуру, так что я сам себе оптимизатор.
Аватара пользователя
Ageron

Re: PowerShell - Windows 10 - Powershell (Установка драйверов)

Сообщение Ageron »

Цитата BelaLugoci:



1) сбор драйверов с эталонной машины
PowerShell - Windows 10 - Powershell (Установка драйверов)




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

и с программами так можно сделать(установить по списку)?
Аватара пользователя
v79italya

Re: PowerShell - Windows 10 - Powershell (Установка драйверов)

Сообщение v79italya »

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

Вернуться в «Скриптовые языки администрирования Windows»