- PowerShell Позволява ви да изброявате, филтрирате и експортирате шофьори с командлети като Get-WmiObject и Get-WindowsDriver.
- шофьорска заявка, на Мениджър на устройства и SCCM (Get-CMDriver) допълват инвентара на контролера.
- Някои динамично заредени драйвери изискват допълнителни инструменти, като WinDbg или verifier.
- Модули като PSWindowsUpdate и външни помощни програми улесняват актуализирането и поддържането на драйверите актуални.
В Windows среди, контролирайте кои драйвери са инсталирани и каква версия има всеки от тях Това е ключово за поддържане на стабилността на системата, отстраняване на проблеми със сини екрани или подготовка за миграции. PowerShell се превърна в невероятно удобен инструмент за извършване на този тип инвентаризация, без да се налага да преминавате през диспечера на устройствата едно по едно.
В следващите редове ще видите Как да изброим контролери от PowerShell по различни начини и как да ги експортираме към файловете, за да ги анализирам спокойно, какви разлики има с другите команди като driverquery или графични инструменти и дори как да се справяте с по-сложни сценарии, като например офлайн изображения или динамично заредени драйвери.
Какво е драйвер и защо бихте искали да го изброите от PowerShell?

В Windows, контролер или драйвер е малък блок софтуер, който действа като посредник между операционната система и компонент на железария (графична карта, чипсет, съхранениепериферни устройства USBи т.н.). Въпреки че кодът, който заемат, не е огромен, влиянието им върху стабилността на системата е гигантско.
Когато критичен драйвер (например, съхранение, мрежа, графика или чипсет) неизправности, могат да причинят сривове, загуба на производителност и дори сини екрани (BSOD)Ето защо наличието на ясен списък с инсталирани драйвери и техните версии е толкова полезно, когато отстранявате грешки или се подготвяте за голяма актуализация.
Преди да се втурнете да сменяте, деинсталирате или отменяте драйвери, е добра идея... минимизиране на рисковете с точка за възстановяване на систематаПо този начин можете да се върнете към предишното състояние, ако актуализацията на драйвера се обърка и компютърът започне да се държи странно или дори не се стартира правилно.
В допълнение към ресторанта, препоръчително е архивирайте важни данни (документи, снимки, работни проекти и др.), особено ако ще работите с драйвери за съхранение, тъй като грешка може да доведе до неправилно монтиране на устройствата от системата или до повреждане на информацията.
Основна команда в PowerShell за изброяване на инсталираните драйвери
Най-прекият начин за получаване на инвентаризация на контролера от PowerShell е разчитайте на WMIЕдна от най-често използваните команди е:
Get-WmiObject Win32_PnPSignedDriver | Select DeviceName, DriverVersion
С тази команда, PowerShell отправя заявки към WMI класа Win32_PnPSignedDriver и връща списък с подписаните PnP драйвери, заедно с името на устройството и версията на драйвера, която системата е асоциирала с него в момента.
Ако искате малко повече контекст за всеки драйвер, можете да добавите полета като приятелско име, дата на публикуване или производител, Например:
Get-WmiObject Win32_PnPSignedDriver | Select DeviceName, FriendlyName, Manufacturer, DriverVersion, DriverDate
С тази консултация ще получите Много по-пълна информация за всеки записТова ви позволява да откривате по-стари версии, конкретни производители или драйвери, които не са актуализирани от години.
Как да експортирам списъка с драйвери във файл (TXT или CSV)
В реални условия, простото преглеждане на списъка на екрана рядко е достатъчно. Най-удобният подход е... запазете резултата във файл да го анализирате в Excel, да го споделите с екипа или да го запазите като моментна снимка на състоянието на системата, преди да направите каквито и да било промени, например преди изтриване на стари драйвери.
Ако ви е необходим само бърз списък в обикновен текст, можете да пренасочите изхода към файл:
Get-WmiObject Win32_PnPSignedDriver | Select DeviceName, DriverVersion > C:\drivers.txt
Тази команда създава файл C:\drivers.txt с опростен списък с устройства и версии. Идеален за бърза справка или прикачване към отчет без излишни затруднения.
Когато търсите нещо по-лесно за филтриране и сортиране, най-добрият вариант е да използвате CSV и командата Export-CSVМного често срещан пример би бил:
Get-WmiObject Win32_PnPSignedDriver | Select DeviceName, FriendlyName, DriverVersion, DriverDate | Export-CSV -Path "./MisDrivers.csv" -NoTypeInformation
С тази команда, файл с име МоитеШофьори.csv които можете да отворите в Excel или която и да е програма за електронни таблици сортиране по версия, филтриране по дата на драйвера, търсене на конкретни производителиИ др
Въпреки че понякога се казва, че PowerShell „не позволява експортиране“ на списъка с драйвери, в действителност Да, може да се експортира перфектно. Използвайки пренасочване на изхода или Export-CSV, както току-що видяхте. След това можете да копирате, поставяте или работите с тази информация, където пожелаете.
Филтриране на драйвери по производител, име или конкретен текст
Обикновено не е желателно да виждате всички драйвери наведнъж, а по-скоро да се съсредоточите върху конкретен производител или тип устройство. За целта можете свързване на филтри с Where-Object относно свойствата на всеки драйвер.
Например, ако се интересувате да запазите само драйверите за IntelМожете да направите нещо толкова просто като:
Get-WmiObject Win32_PnPSignedDriver | Select DeviceName, DriverVersion | Where-Object { $_.DeviceName -like "*Intel*" }
Тази команда итерира през всички записи, върнати от WMI и Поддържа само тези, чието име на устройство съдържа низа „Intel“Използването на звездичката като заместващ знак ви позволява да търсите частични съвпадения навсякъде в текста.
Същата идея може да се използва за намиране на драйвери, свързани с конкретно приложение или тип хардуер, например за актуализиране на USB драйвериАко знаете част от името, производителя или някакъв модел на маршрута, можете адаптирайте филтъра към най-комфортния имот във всеки случай.
Преглед на драйвери от диспечера на устройствата и други инструменти на Windows
Въпреки че PowerShell е много мощен за автоматизиране и експортиране на списъци, Windows все още предлага класически графични инструменти за управление на контролери което трябва да бъде известно и комбинирано с пътя на командата.
Първата отправна точка е Мениджър на устройстваДостъпът до него се осъществява чрез щракване с десния бутон върху „Този компютър“ и избиране на „Управление“ или по-бързо чрез контекстното меню на бутона „Старт“ (Windows + X). Там ще видите дървовиден списък с всички категории хардуер, инсталирани в системата.
Устройства, които имат проблеми с инсталирането или работата, често се появяват с жълта икона за предупреждениеАко щракнете двукратно върху някой от тях, се отваря прозорецът със свойства, където можете да проверите състоянието на устройството и да получите достъп до раздела „Драйвер“.
В този раздел ще намерите опции като „Детайли за драйвера“, „Актуализиране на драйвера“, „Връщане към предишна версия на драйвера“, „Деактивиране“ или „Деинсталиране“Тези действия ви позволяват да преглеждате файловете на драйвера, да търсите нови версии, да се върнете към предишна версия, да деактивирате устройството, без да го премахвате, или напълно да премахнете драйвера от системата.
В допълнение към тези инструменти, Windows включва командата driverquery да се използва от командния ред (CMD). Бягане driverquery Ще получите списък с всички инсталирани драйвери и с driverquery /v Ще видите по-подробна информация, като например използване на паметта, дата на компилация или състояние.
driverquery и връзката му с PowerShell
Командата driverquery е много гъвкава и позволява Преглед на различни изгледи на състоянието на водачаНапример, ако искате да изброите само подписаните драйвери по-подробно, можете да изпълните:
driverquery /si
Този режим показва подписани шофьори с допълнителна полезна информация за одити на сигурността или проверки на целостта. И винаги можете да се консултирате driverquery /? за да видите всички налични параметри и да настроите изхода според вашите нужди.
Едно от предимствата на driverquery е, че Можете да го интегрирате с PowerShell, използвайки ConvertFrom-CSVАко генерирате изхода във формат CSV и го прехвърлите през канал (pipe), ще получите обекти, които могат да бъдат манипулирани от PowerShell. Класически пример би бил:
driverquery.exe /v /fo csv | ConvertFrom-CSV | Select-Object "Display Name", "Start Mode", "Paged Pool(bytes)", Path
С това комбинирате Силата на driverquery с манипулиране на данни в PowerShellИзбиране само на колоните, които ви интересуват: показвано име, режим на стартиране, странична памет и път на драйвера на диска. Това е полезно, когато искате да филтрирате по конкретни типове, като например графични драйвери.
Трябва да се отбележи, че както driverquery, така и някои стандартни WMI заявки се фокусират предимно върху шофьори, регистрирани в системата, много от тях са се заредили в ботуш или управлявани чрез системния регистър на адрес HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services. Някои драйвери, които се инжектират динамично по време на изпълнение, може да не се показват в тези списъци.
Избройте драйвери от PowerShell с Get-WindowsDriver
За по-сложни сценарии, особено при работа с Офлайн изображения на Windows (например, монтирани WIM-ове), командата е много полезна Get-WindowsDriver, който е част от DISM инструментите, достъпни от PowerShell.
Тази команда ви позволява да показвате информация за пакетите с драйвери както за работещата инсталация на Windows, така и за изображение, монтирано в папка. Основният синтаксис е разделен на два основни режима на употреба: офлайн и онлайн.
За офлайн изображение, монтирано в папкаОбщата форма би била:
Get-WindowsDriver -Path "C:\offline"
И за да работите срещу работещата система, бихте използвали параметъра -На линия:
Get-WindowsDriver -Online
Без допълнителни параметри, Get-WindowsDriver връща списъка с драйвери на трети страни присъства в изображението. Ако добавите модификатора -ВсичкоЩе видите и драйвери по подразбиране, включени по подразбиране в Windows.
Ключови параметри на Get-WindowsDriver
Един от най-важните параметри е -Шофьоркоето ви позволява да посочите конкретен .inf файл или папка с .inf файлове За да получите подробна информация за тези драйвери. Ако посочите към папка, .inf файловете, които не са валидни пакети с драйвери, автоматично се игнорират.
Когато работите с офлайн изображение, параметърът -Пътека указва коренния път на монтираното изображение. Ако папката на Windows не е точно на това коренно ниво, можете да използвате -Директория на Windows за да укажете относителната подпапка, където се намира.
Параметър -Системно устройство Използва се в по-специфични сценарии, например когато работите от Windows PE и мениджърът за зареждане е на различен дял. В тези случаи служи за указване на устройството, съдържащо BootMgr файловете, които трябва да бъдат обслужени.
Относно дневника на активността, параметърът -LogPath Позволява ви да дефинирате пълния път до лог файла. Ако не го промените, се използва пътят по подразбиране. %WINDIR%\Logs\Dism\dism.logили в Windows PE, свободното пространство в RAM паметта. Междувременно, -LogLevel определя подробността на лога, като стойностите варират от само грешки до включване на информация за отстраняване на грешки.
Накрая, параметърът -Скретч директория Това е временната папка, където файловете се извличат по време на сервизни операции. Трябва да е локален път и след като операцията приключи, временни файлове Те се отстраняват автоматично, за да не остават остатъци.
Практически примери с Get-WindowsDriver
За да видите бързо всички драйвери за текущата ви инсталация на Windows, можете да изпълните:
Get-WindowsDriver -Online -All
Тази команда ще се покаже всички драйвери (както системни, така и на трети страни) присъства в работещия образ. Това е много директен начин да видите кои пакети са инсталирани, без да използвате WMI или Device Manager.
Ако работите с изображение, монтирано в C:\offline И ако искате да проверите само драйвери на трети страни, можете да направите следното:
Get-WindowsDriver -Path "C:\offline"
Ако искате подробен отчет за конкретен OEM драйвер в това изображение, просто посочете .inf файла:
Get-WindowsDriver -Path "C:\offline" -Driver "OEM1.inf"
Можете дори да получите достъп до .inf файл, разположен в определен път на драйвера, например:
Get-WindowsDriver -Path "C:\offline" -Driver "C:\drivers\Usb\Usb.inf"
Във всички тези случаи, Get-WindowsDriver връща обекти които можете да препратите към Select-Object, Where-Object или Export-CSV, за да филтрирате, сортирате или експортирате информацията във формат, който ви подхожда най-добре.
PowerShell и SCCM: Get-CMDriver за каталози на драйвери
Когато управлявате корпоративна среда с Мениджър на конфигурации (SCCM)Интересуват ви не само драйверите на всеки компютър, но и централизираният каталог с драйвери, който SCCM поддържа за разполагане на изображения и пакети.
В този контекст, командлетът влиза в действие. Get-CMDriver, Това работи за Извличане на информация от драйвери на устройства, управлявани от Configuration ManagerТази команда има няколко сигнатури в зависимост от това какво искате да заявите: по име, по числов идентификатор, по пакет с драйвери или по административна категория.
Основният синтаксис включва варианти като:
Get-CMDriver
Get-CMDriver -DriverPackageId <String>
Get-CMDriver -DriverPackageName <String>
Get-CMDriver -Id <Int32>
Get-CMDriver -InputObject <IResultObject>
С тези параметри можете да насочвате заявките си към каталога на SCCM, филтрирайки по име на драйвер, идентификатор, свързани пакети или административни категории които сте дефинирали, за да организирате контролерите си.
Примери с Get-CMDriver
Ако знаете името на конкретен драйвер, например „Surface Serial Hub Driver“, можете да получите подробности за него чрез:
Get-CMDriver -Name "Surface Serial Hub Driver"
Когато трябва да проверите няколко драйвера, които споделят един и същ префикс в името си (като цялото семейство драйвери за Surface) и искате да видите само някои подходящи свойства, можете да използвате нещо подобно:
Get-CMDriver -Fast -Name "Surface*" | Select-Object LocalizedDisplayName, DriverVersion, DriverDate
Модификаторът -Бърз Това намалява количеството извлечена информация и ускорява заявката, което е доста забележимо в големи каталози. След това, с Select-Object, Запазвате само колоните, които са ви полезни за вашия анализ.
Ако управлявате административни категории (например категория „Повърхност“, където групирате всички тези контролери), можете да верижно извличате категории и драйвери по следния начин:
$category = Get-CMCategory -Name "Surface"
Get-CMDriver -Fast -AdministrativeCategory $category
В този случай първо съхранявате категорията в променлива и след това искате Get-CMDriver да ви я върне. всички контролери, свързани с тази категория, нещо много полезно за поддържане на логически изгледи на вашите контролери в SCCM.
Ограничения при изброяване на динамично заредени драйвери
Не всички драйвери се държат еднакво. Има инструменти, като някои от пакета. Sysinternals (например, Process Explorer или handle.exe)които динамично инжектират драйвери в ядрото, когато се изпълняват, без да ги регистрират като традиционни услуги, заредени при стартиране.
Типичен пример е шофьорът procexp152.sys (или по-ранни версии, като например procexp113.sys), свързани с Process Explorer. Този тип драйвер може да не се показва в стандартните заявки на Get-WmiObject Win32_SystemDriverтъй като тези заявки разчитат на информация от услугите на системния регистър (CurrentControlSet\Services) и обикновено отразяват главно драйверите, които са заредени със системата.
По същия начин, driverquery може да не изброява всички динамично инжектирани драйвериТака че, ако отстранявате грешки в BSOD или аномално поведение, причинено от инструменти на трети страни, които зареждат свои собствени драйвери, може да се наложи да прибегнете до други методи.
Сред тези алтернативи са разгледайте изхвърляния на паметта ядро с инструменти като WinDbg или използвайте помощни програми като verifier.exeПроверката на драйвери ви позволява да изберете драйвери, които искате да наблюдавате и да откривате нестабилно поведение, но графичният интерфейс предлага повече опции за изброяване от версията от командния ред, която се фокусира върху заявки и конфигуриране на проверка.
Накратко, за обща инвентаризация и за повечето административни нужди, PowerShell, WMI и Get-WindowsDriver покриват основите много добре.Въпреки това, в екстремни случаи на отстраняване на грешки при горещо зареждане на драйвери, ще е необходимо да допълните с инструменти за анализ на ядрото.
Актуализирайте драйвери с PowerShell, използвайки PSWindowsUpdate
В допълнение към изброяването на драйвери, много администратори използват PowerShell за автоматизиране на актуализациите на драйвери чрез Windows Update а също и за актуализиране на звукови драйвериЕдин често използван метод е чрез модула PSWindowsUpdate, който разширява стандартните командлети за актуализиране.
Обичайният поток преминава през временно разрешаване на изпълнението на подписани скриптовеИнсталирайте модула и след това поискайте актуализации на драйверите директно от сървърите на Microsoft.
Типичен набор от команди може да бъде:
Set-ExecutionPolicy -Scope Process -ExecutionPolicy Bypass
Install-Module PSWindowsUpdate
Import-Module PSWindowsUpdate
Get-WindowsUpdate
Get-WindowsUpdate -MicrosoftUpdate -Category Driver -Install -AutoReboot
Тази последователност активира изпълнението на скрипт за текущата сесия, инсталира и импортира модула PSWindowsUpdate, Проверявате какви актуализации са налични. И накрая, вие заявявате те да бъдат инсталирани от категорията „Драйвер“ чрез Microsoft Update, което позволява на системата да се рестартира автоматично, ако е необходимо.
Можете също да разширите обхвата, като използвате команда, която инсталира всички актуализации, открити от Microsoft Update, и рестартира без намеса, например:
Get-WindowsUpdate -MicrosoftUpdate -Install -AutoReboot
Този начин на работа е особено практичен в големи отборни парковеТук е необходимо да стандартизирате версиите на драйверите, без да се преминава към тях една по една. Въпреки това, винаги е препоръчително това да се комбинира с добър предварителен списък с драйвери и, в критични среди, да се тества в пилотна група, преди да се внедри в цялата организация.
Страстен писател за света на байтовете и технологиите като цяло. Обичам да споделям знанията си чрез писане и това е, което ще направя в този блог, ще ви покажа всички най-интересни неща за джаджи, софтуер, хардуер, технологични тенденции и много други. Моята цел е да ви помогна да се ориентирате в дигиталния свят по лесен и забавен начин.
