- Резервная копия (экспорт) драйверов и их восстановление с помощью PowerShell в Windows 10 и 8.1
- Экспорт драйверов с помощью командлета Export-WindowsDriver
- Бэкап драйверов с помощью DISM
- Используем утилиту PNPUtil для создания резервную копии установленных драйверов
- Восстановление драйверов из резервной копии
- Export-Windows Driver
- Syntax
- Description
- Examples
- Example 1: Export drivers from the running operating system
- Example 2: Export drivers from an offline image
- Parameters
- PowerShell: управление принтерами и драйверами печати в Windows 10 / Server 2016
- Модуль PowerShell: PrintManagement
- Установка драйвера печати в хранилище драйверов
- Установка нового принтера с помощью PowerShell
- Вывод списка принтеров на сервере печати с помощью PowerShell
- Подключение сетевого принтера из PowerShell
- Удаление принтера с помощью PowerShell
Резервная копия (экспорт) драйверов и их восстановление с помощью PowerShell в Windows 10 и 8.1
После переустановки или чистой установки Windows пользователь сталкивается с необходимостью установки актуальных версий драйверов для устройств, установленных в компьютере. Сразу после переустановки системы пользователю приходится вручную качать драйвера с сайта производителя или использовать различные драйвер-паки (в комплекте с которыми как правило идет разный мусор и рекламное ПО). Однако есть более простой способ переустановки драйверов в Windows. Не все знают, что перед переустановкой Windows вы можете создать резервную копию всех драйверов, установленных в системе. В дальнейшем с помощью резервной копии вы сможете быстро установить все необходимые драйвера уже в чистой системе.
В этой статье мы покажем вам основные способы создания бэкапа (резервной копии) всех драйверов, установленных в Windows и способы восстановления драйверов из бэкапа без использования сторонних инструментов.
Экспорт драйверов с помощью командлета Export-WindowsDriver
В Windows 8.1 Update 1 появился новый Powershell командлет Export-WindowsDriver, позволяющий экспортировать все установленные в системе сторонние драйвера (имеются в виду не родные драйвера Microsoft) напрямую из хранилища драйверов (Driver Store). Во всех версиях Windows 10 командлет Export-WindowsDriver уже имеется в системе. Данный командлет позволят существенно облегчить и ускорить процесс переустановки Windows, т.к. раньше для создания резервной копии драйверов, установленных в системе, приходилось использовать стороннее ПО, например, DoubleDriver, DriverMax и пр.
Итак, чтобы в Windows 10 или 8.1 непосредственно в установленной системе извлечь из текущего образа все установленные драйвера сторонних производителей, откройте консоль PowerShell с правами администратора и выполните команду:
Export-WindowsDriver –Online -Destination c:\drivers
Если нужно извлечь драйвера из офлайн образа Windows, смонтированного, например, в каталог c:\win_image, команда должна выглядеть так.
Export-WindowsDriver -Path c:\win_image -Destination c:\drivers
После запуска командлета на экране появится информация о всех экспортируемых драйверах, которые не являются частью ОС.
В результате выполнения команды PowerShell вы получите каталог с резервной копией всех драйверов, установленных в Windows. Каждый драйвер и все связанные с ним файлы сохраняется в собственный каталог, который называется по имени inf-файла драйвера.
В каждом каталоге присутствуют все файлы, необходимый для установки драйвера в системе (не только inf файлы, но и все связанные sys, dll, exe и другие типы файлов). Командлет Export-WindowsDriver строит список файлов, которые необходимы для установки драйвера в соответствии со списком файлов, указанных в секции CopyFiles inf-файла драйвера.
Чтобы отобразить список всех экспортируемых драйверов в удобном виде с указанием класса, производителя и версии драйвера, осуществим экспорт драйверов двумя командами:
$BackupDrv = Export-WindowsDriver -Online -Destination c:\drivers
После чего отобразим результаты выполнения команды в табличной форме:
$BackupDrv | Select-Object ClassName, ProviderName, Date, Version | Sort-Object ClassName
Как вы видите, в получившейся таблице указан класс драйвера, производитель, версия и дата.
Вы можете выгрузить информацию об экспортированных драйверах в CSV файл:
$BackupDrv| Select-Object ClassName, ProviderName, Date, Version |Export-Csv c:\ps\drivers_list.txt
Можно вывести список драйверов определенного класса устройств с помощью атрибута класса ClassName. Например, чтобы вывести только драйвера принтеров, выполните команду:
Чтобы вывести список драйверов определенного производителя, воспользуйтесь командой:
Бэкап драйверов с помощью DISM
Утилита DISM также предоставляет возможность как создания резервной копии драйверов, так и их импорта в образ Windows.
Чтобы экспортировать все драйвера в каталог C:\Drivers, откройте командную строку с правами администратора и выполните команду:
dism /online /export-driver /destination:C:\Drivers
Экспорт 1 из 27 — oem0.inf: Пакет драйверов успешно экспортирован.
Как вы видите, в нашем примере утилита DISM успешно экспортировала в указанный каталог 27 драйверов.
Используем утилиту PNPUtil для создания резервную копии установленных драйверов
В состав всех версий Windows, начиная c Windows 7, входит утилита PNPUtil, которая обычно используется для добавления или удаления драйверов в Windows (ранее мы показывали как удалить старые версии драйверов из хранилища драйверов Windows для экономии места на диске).
Откройте командную строку с повышенными правами и выполните команду:
pnputil.exe /export-driver * c:\drivers
Драйвера из получившегося каталога с драйверами можно распространить на другие системы вручную с помощью PowerShell или DISM (Как интегрировать драйвера в образ Windows), или автоматизировано с помощью скриптов на основе PNPUtil, DISM, PowerShell, MDT, SCCM и т.п.
Восстановление драйверов из резервной копии
После переустановки системы вы можете использовать каталог с резервной копией драйверов для установки в чистой системе.
Вы можете установить конкретный драйвер, щелкнув правой кнопкой по INF файлу и выбрав пункт меню «Установить».
Также можно установить драйвер конкретного устройства через диспетчер оборудования. В диспетчере устройств выберите устройство, драйвер которого вы хотите заменить, выберите пункт «Обновить драйвер» -> «Выполнить поиск драйверов на этом компьютере». Укажите путь к каталогу с резервной копией драйверов. Чтобы автоматически просканировать на подходящие драйвера все вложенные папки, выберите соответствующую опцию.
Однако есть более простой способ установки сразу всех драйверов, которые присутствуют в резервной копии. Для этого воспользуйтесь следующим PowerShell скриптом:
$driver_inf_files = Get-ChildItem -Path «C:\Drivers\» -Filter «*.inf» -Recurse -File
foreach($driver_inf_file in $driver_inf_files)<
$driver_inf_file.FullName
pnputil.exe -i -a «$driver_inf_file.FullName»
>
Данный PoSh скрипт последовательно обходит все папки в указанном каталоге, ищет все inf файлы и устанавливает драйвера в хранилище драйверов с помощью утилиты PNPUtil.
Также можно импортировать все драйвера из каталога с резервной копией в образ Windows с помощью параметра Add-Driver утилиты DISM:
DISM /online /Add-Driver /Driver:C:\Drivers /Recurse
Можно добавить драйвер как в онлайн, так и в офлайн образ Windows (см. пример Интеграция драйверов USB 3.0 в дистрибутив Windows 7).
Итак, в этой статье мы рассмотрели разные способы экспорт и импорта драйверов в Windows. Также мы познакомились с новым командлетом Export-WindowsDriver в Windows 10 и Windows 8.1 Update 1, позволяющим создать резервную копию всех сторонних драйверов, установленные в системе, и экспортировать их в отдельную папку.
Export-Windows Driver
Exports all third-party drivers from a Windows image to a destination folder.
Syntax
Description
The Export-WindowsDriver cmdlet exports all third-party drivers from a Windows image to a destination folder.
Examples
Example 1: Export drivers from the running operating system
This command exports third-party drivers from the running version of Windows.
Example 2: Export drivers from an offline image
This command exports third-party drivers from an offline image mounted at c:\offline-image.
Parameters
Specifies a directory the exported third-party drivers will be stored.
Type: | String |
Position: | Named |
Default value: | None |
Accept pipeline input: | True |
Accept wildcard characters: | False |
Specifies the maximum output level shown in the logs. The default log level is 3. The accepted values are as follows:
- 1 = Errors only
- 2 = Errors and warnings
- 3 = Errors, warnings, and information
- 4 = All of the information listed previously, plus debug output
Type: | LogLevel |
Aliases: | LL |
Accepted values: | Errors, Warnings, WarningsInfo |
Position: | Named |
Default value: | None |
Accept pipeline input: | True |
Accept wildcard characters: | False |
Specifies the full path and file name to log to. If not set, the default is %WINDIR%\Logs\Dism\dism.log . In Windows PE, the default directory is the RAMDISK scratch space which can be as low as 32 MB. The log file will automatically be archived. The archived log file will be saved with .bak appended to the file name and a new log file will be generated. Each time the log file is archived the .bak file will be overwritten. When using a network share that is not joined to a domain, use the net use command together with domain credentials to set access permissions before you set the log path for the DISM log.
Type: | String |
Aliases: | LP |
Position: | Named |
Default value: | None |
Accept pipeline input: | True |
Accept wildcard characters: | False |
Specifies that the action is to be taken on the operating system that is currently running on the local computer.
Type: | SwitchParameter |
Position: | Named |
Default value: | None |
Accept pipeline input: | True |
Accept wildcard characters: | False |
Specifies the full path to the root directory of the offline Windows image that you will service. If the directory named Windows is not a subdirectory of the root directory, WindowsDirectory must be specified.
Type: | String |
Position: | Named |
Default value: | None |
Accept pipeline input: | True |
Accept wildcard characters: | False |
Specifies a temporary directory that will be used when extracting files for use during servicing. The directory must exist locally. If not specified, the \Windows\%Temp% directory will be used, with a subdirectory name of a randomly generated hexadecimal value for each run of DISM. Items in the scratch directory are deleted after each operation. You should not use a network share location as a scratch directory to expand a package (.cab or .msu file) for installation. The directory used for extracting files for temporary usage during servicing should be a local directory.
Type: | String |
Position: | Named |
Default value: | None |
Accept pipeline input: | True |
Accept wildcard characters: | False |
Specifies the path to the location of the BootMgr files. This is necessary only when the BootMgr files are located on a partition other than the one that you are running the command from. Use -SystemDrive to service an installed Windows image from a Windows PE environment.
Type: | String |
Position: | Named |
Default value: | None |
Accept pipeline input: | True |
Accept wildcard characters: | False |
Specifies the path to the Windows directory relative to the image path. This cannot be the full path to the Windows directory; it should be a relative path. If not specified, the default is the Windows directory in the root of the offline image directory.
PowerShell: управление принтерами и драйверами печати в Windows 10 / Server 2016
В предыдущей статье мы рассмотрели олдскульные vbs скрипты, которые можно было использовать для управления принтерами и печатью во всех версиях Windows, начиная с Windows XP. Сегодня же мы рассмотрим типовые команды для создания, удаления принтеров, портов и драйверов печати в Windows при помощи PowerShell. Рассмотренные методы управления принтерами можно использовать в современных ОС — Windows 10, 8.1 и Windows Server 2012 R2 / 2016 / 2019.
Модуль PowerShell: PrintManagement
Вместе с выходом Windows 8.1 и Windows Server 2012 R2 Microsoft выпустила новую версию PowerShell 4.0 (входит в состав Windows Management Framework 4.0), в котором был существенно расширен список командлетов по управлению сервером печати на базе Windows. Полный список командлетов, по управлению принтерами, драйверами и очередями печати, доступных в модуле PrintManagement на Windows 10 (PoSh v5) можно вывести командой:
Get-Command –Module PrintManagement
В модуле PrintManagement доступны 22 командлета PowerShell для управления принтерами, драйверами, портами печати и очередями:
- Add-Printer – добавить (установить) новый принтер;
- Add-PrinterDriver — установить новый драйвер печати;
- Add-PrinterPort – создать порт печати;
- Get-PrintConfiguration – вывести настройки печати принтера;
- Get-Printer – вывести список принтеров, установленных на компьютере;
- Get-PrinterDriver – вывести список установленных драйверов печати;
- Get-PrinterPort — вывести список портов печати;
- Get-PrinterProperty – показать свойства принтера;
- Get-PrintJob – получить список заданий печати принтера;
- Read-PrinterNfcTag – получить информацию о принтере из NFC метки;
- Remove-Printer — удалить принтер;
- Remove-PrinterDriver — удалить драйвер принтера;
- Remove-PrinterPort — удалить порт принтера;
- Remove-PrintJob – удалить задание печати на принтере;
- Rename-Printer — переименовать принтер;
- Restart-PrintJob — перезапустить задание печати;
- Resume-PrintJob — запустить приостановленное задание
- Set-PrintConfiguration – настройка конфигурации принтера;
- Set-Printer – обновить конфигурацию принтера;
- Set-PrinterProperty — изменить свойства принтера;
- Suspend-PrintJob – приостановить выполнение задания печати;
- Write-PrinterNfcTag – записать информацию в метку NFC.
Подробную информацию о синтаксисе конкретной команды можно получить так:
Примеры использования команд:
Рассмотрим несколько примеров типовых сценариев управления принтерами в Windows 10 из PowerShell.
Установка драйвера печати в хранилище драйверов
Чтобы вывести список драйверов печати, который установлены в хранилище драйверов Windows:
Уставим в системе новый драйвер печати, например, HP Universal Printing PCL 6. Согласно документации, команда PowerShell для добавления драйвера должна быть такой:
Add-PrinterDriver -Name «HP Universal Printing PCL 6» -InfPath «C:\Distr\HP-pcl6-x64\hpcu118u.inf»
Однако при попытке установить драйвер подобным образом появляется ошибка:
Оказывается, драйвер из inf файла можно добавить только в том случае, если он уже находится в хранилище драйверов DriverStore (подробнее про хранилище можно почитать здесь). Получается, что с помощью команды Add-PrinterDriver установить драйвер, отсутствующий в хранилище драйверов системы нельзя. Для установки драйвера в DriverStore можно воспользоваться:
- vbs скриптом из предыдущей статьи;
- Утилитой pnputil.exe. Формат такой: pnputil.exe -i -a C:\Distr\HP-pcl6-x64\hpcu118u.inf (установить конкретный драйвер принтера) или pnputil.exe -i -a C:\Distr\HP-pcl6-x64\*.inf (установит все драйвера, найденные в inf файлах указанного каталога);
- Командлетом Add-WindowsDriver, позволяющим интегрировать драйвера в оффлайн образ Windows.
После добавления драйвер принтера в хранилище, необходимо добавить его в список доступных принт-сервере.
Add-PrinterDriver -Name «HP Universal Printing PCL 6»
Установка нового принтера с помощью PowerShell
Создадим ip порт для печати на сетевом принтере (тут можно указать как IP адрес сетевого принтера, так и имя удаленного принт-сервера):
Add-PrinterPort -Name «IP_192.168.10.26» -PrinterHostAddress «192.168.10.26»
Перед добавлением порта вы можете проверить, существует ли он:
$portName = «IP_192.168.10.26»
$checkPortExists = Get-Printerport -Name $portname -ErrorAction SilentlyContinue
if (-not $checkPortExists) <
Add-PrinterPort -name $portName -PrinterHostAddress «192.168.10.26»
>
С помощью следующей команды мы создадим в системе новый принтер и опубликуем его (откроем к нему общий доступ):
Add-Printer -Name hp2050_Office1_Buh -DriverName «HP Deskjet 2050 J510 series Class Driver» -PortName IP_192.168.10.26 -Shared -ShareName «hp2050_1_BUh» –Published
Rename-Printer -Name «hp2050_Office1_Buh» -NewName » hp2050_Salary»
После выполнения указанных команд в системе появится новый принтер с общим доступом под именем hp2050_Office1_Buh.
Вывод списка принтеров на сервере печати с помощью PowerShell
Выведем полный список принтеров, установленных на данном компьютере:
Как вы видите, команда показывает имя принтера, тип (локальный или сетевой), драйвер, порт печати, открыт ли к принтеру общий доступ и опубликован ли принтер в AD.
Большинство командлетов модуля PrintManagement можно использовать для просмотра состояния и управления принетрами, драйверами и очередями печати на удаленных компьютерах. Имя удаленного компьютера или сервера указывается в качестве аргумента параметра –ComputerName.
С помощью PowerShell вы можете получить информацию об установленных принтерах на удаленном компьютере (принт-сервере), для этого выполните команду:
Get-Printer -ComputerName msk-prnt1 | Format-List Name,DriverName
Чтобы вывести только список принтеров с общим доступом, используйте команду:
Get-Printer -ComputerName msk-prnt1 | where Shared -eq $true | fl Name
Подключение сетевого принтера из PowerShell
Чтобы подключить принтер с сервера печати, используйте команду:
Add-Printer -ConnectionName \\msk-prnt1\HPCL3020
Windows 10 использует последний принтер, на который выполнялась печать в качестве принтера по умолчанию, если вы хотите использовать фиксированный принтер по-умолчанию, выполните команду:
Set-ItemProperty -Path «HKCU:\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Windows» -Name «LegacyDefaultPrinterMode» -Value 1 –Force
Чтобы установить принтер по-умолчанию используйте следующие команды:
$wsnObj = New-Object -COM WScript.Network
$wsnObj.SetDefaultPrinter(%PrinterName%)
Удаление принтера с помощью PowerShell
Чтобы удалить принтер, нужно выполнить такую команду PowerShell:
Remove-Printer -Name «hp2050_Office1_Buh»
Вы можете удалить конкретный драйвер при помощи командлета Remove-PrinterDriver:
Remove-PrinterDriver -Name «HP Universal Printing PCL 6»