Как экспортировать драйвера с помощью PowerShell, за минуту
Необходимость сохранить установленные в операционной системе драйверы встречается достаточно часто. Однако до недавнего времени в Windows не было нужного функционала и для экспорта драйверов приходилось использовать сторонние программы. Ситуация изменилась с выходом обновления Update 1 для Windows 8.1 - Server 2012 R2, в состав которого входит PowerShell командлет Export-WindowsDriver.
Этот командлет позволяет извлечь из хранилища драйверов (Driver Store) все установленные в системе драйверы сторонних производителей (не Microsoft) и сохранить их в указанное место. Export-WindowsDriver умеет доставать драйверы как из работающей системы, так и из офлайн образа Windows.
Как выгрузить драйвер из системы
Делается это достаточно просто, например для извлечения драйверов из текущей системы в папку Drivers можно воспользоваться такой командой:
Чтобы немного упростить себе задачу, можно изменить вывод следующим способом:
$drivers | ft ProviderName, ClassName, Date, Version -auto
Это позволит отобразить список драйверов в более читабельном виде, с указанием производителя, типа и версии драйвера. Как вариант, можно вывести список в текстовый файл и поместить его в директорию с драйверами:
Все экспортируемые драйвера сохраняются в указанной директории, каждый в свою папку, названную по имени inf-файла
Извлеченные таким образом драйвера можно устанавливать вручную или использовать в сценариях автоматического развертывания, например с помощью WDS или System Center Configuration Manager. Также их можно интегрировать непосредственно в установочный образ Windows. Возможность экспортировать драйвера очень удобна, так как позволяет сэкономить время на поиск нужных драйверов. К сожалению, экспорт драйверов возможен только в Windows 8.1\Server 2012 R2 с установленным Update 1. Еще примером когда, выгрузка драйверов, очень полезна, это при переустановке операционной системы на моих не любимых ноутбуках Sony Vaio, для которых поиск дров, переходит в целую эпопею.
Ошибка Value cannot be null
В операционных системах Windows Server 2022 вы можете встретиться при выполнении командлета Export-WindowsDriver вот такую ошибку:
Parameter name: SafeHandle cannot be null.
At line:1 char:1
+ Export-WindowsDriver -Online -Destination "C:\Drivers"
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+ CategoryInfo : NotSpecified: (:) [Export-WindowsDriver], ArgumentNullException
+ FullyQualifiedErrorId : System.ArgumentNullException, Microsoft.Dism.Commands.ExportWindowsDriverCommand
Связано это с глюком самой ОС и Microsoft так и не починила это, как обходной путь это использование утилиты командной строки DISM.