Установка драйверов через powershell windows 10

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»

Читайте также:  Самый красивый дистрибутив linux 2021

Однако при попытке установить драйвер подобным образом появляется ошибка:

Оказывается, драйвер из 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»

Читайте также:  Взлом word windows 10

Резервная копия (экспорт) драйверов и их восстановление с помощью 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

Читайте также:  Что делать если рабочий стол не открывается windows

Можно вывести список драйверов определенного класса устройств с помощью атрибута класса 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, позволяющим создать резервную копию всех сторонних драйверов, установленные в системе, и экспортировать их в отдельную папку.

Оцените статью