- PowerShell: управление принтерами и драйверами печати в Windows 10 / Server 2016
- Модуль PowerShell: PrintManagement
- Установка драйвера печати в хранилище драйверов
- Установка нового принтера с помощью PowerShell
- Вывод списка принтеров на сервере печати с помощью PowerShell
- Подключение сетевого принтера из PowerShell
- Удаление принтера с помощью PowerShell
- Резервная копия (экспорт) драйверов и их восстановление с помощью PowerShell в Windows 10 и 8.1
- Экспорт драйверов с помощью командлета Export-WindowsDriver
- Бэкап драйверов с помощью DISM
- Используем утилиту PNPUtil для создания резервную копии установленных драйверов
- Восстановление драйверов из резервной копии
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»
Резервная копия (экспорт) драйверов и их восстановление с помощью 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, позволяющим создать резервную копию всех сторонних драйверов, установленные в системе, и экспортировать их в отдельную папку.