Powershell установить сетевой принтер

Обновлено: 21.11.2024

В этом посте я покажу вам, как легко установить драйверы принтеров и принтеры из Intune, используя приложения Win32 и PowerShell.

Моя привязанность и восхищение приложениями Win32, вероятно, не остались незамеченными в последнее время. Приложения Win32 очень универсальны, и я часто использую их, чтобы клиенты могли делать что-то еще помимо установки приложений.

Недавно клиент спросил, можно ли установить сетевые принтеры на устройства с Windows 10, присоединенные к Azure AD, с помощью Microsoft Intune. Мои глаза загорелись. Есть много способов содрать шкуру с этого кота, и что еще более усложняло задачу, так это то, что драйвер принтера был упакован в темные века (мягко говоря).

Многие разработчики приложений постепенно приходят к мысли, что администраторы должны иметь возможность устанавливать приложения автоматически и автономно. Как упаковщик приложений, вы можете читать это и давиться кофе — нам предстоит пройти долгий путь, пока все поставщики не будут на одном листе гимнов. По моему опыту, драйверы и микропрограммы часто отстают от этого утопического представления об автономной установке приложений.

Потратить время на то, чтобы подтолкнуть эти устаревшие установщики в правильном направлении, может стать утомительным. Часто, когда мы фокусируемся на драйверах принтера, установщик приложения представляет собой просто красивую оболочку, а конечная полезная нагрузка всегда одна и та же — установка драйвера принтера в Windows.

Имея это в виду, мы можем полностью обойти программу установки. Нам просто нужны соответствующие файлы для вставки в хранилище драйверов. Как только это будет сделано, мы можем использовать некоторые базовые сценарии для создания порта принтера, установки драйвера принтера и добавления принтера в Windows. В этом посте мы рассмотрим: -

В INF-inity… и дальше

Пакет драйверов включает все необходимые компоненты для обеспечения поддержки вашего принтера в Windows. Как правило, любой пакет драйверов содержит следующие компоненты:

  • INF-файл
  • Файл каталога
  • Файлы драйверов
  • Другие файлы

Файл INF представляет собой текстовый файл, содержащий информацию об устройстве и драйвере, включая файлы драйвера, записи реестра, идентификаторы устройств, файлы каталогов и информацию о версии, которая требуется для установки пакетов драйверов в Windows.

1 . Загрузите и извлеките программное обеспечение драйвера принтера с веб-сайта производителя.

Загрузить программное обеспечение драйвера принтера

2 . Setup.exe — это просто установщик, который направляет пользователя через пользовательский интерфейс для установки пакета драйверов. Этот конкретный установщик не может быть запущен автоматически, поэтому мы перейдем к папке Driver в ожидании установки драйверов с помощью сценария PowerShell.

Извлеките файл

3 . Откройте INF-файл

INF-файл

4 . Файл INF указывает, какие файлы необходимы для установки драйвера. В этом примере требуется gpb0.cab

Требуется файл gpb0.cab

5 . Windows не только отмечает любые исходные файлы, требуемые с помощью файла INF, но и проверяет, можно ли доверять файлам — она делает это с помощью файла каталога. Файл каталога содержит криптографический хэш каждого файла в пакете драйвера. Windows использует эту информацию для проверки того, что пакет не был изменен после публикации. В нашем примере файл каталога драйверов — cnlb0m.cat.

6 . Подводя итог, можно сказать, что для установки этого драйвера принтера Canon потребуются следующие файлы: -

  • cnlb0m.cat
  • CNLB0MA64.inf
  • gpb0.cab

Магазин драйверов Windows

Windows хранит коллекцию входящих и сторонних пакетов драйверов в безопасном месте на локальном жестком диске, называемом хранилищем драйверов. На устройство можно установить только пакеты драйверов из магазина драйверов.

Пакет драйвера в комплекте — это пакет, который включен в установку Windows по умолчанию

Файл INF и все файлы, на которые ссылается файл INF, будут скопированы в хранилище драйверов при установке пакета драйверов. INF-файл должен содержать ссылки на все файлы, необходимые для установки устройства, чтобы они присутствовали в магазине драйверов.

Если INF-файл ссылается на файл, не включенный в пакет драйвера, пакет драйвера не копируется в хранилище

Процесс копирования пакета драйверов в хранилище драйверов называется промежуточным размещением. Пакет драйвера должен быть помещен в хранилище драйверов, прежде чем его можно будет использовать для установки каких-либо устройств.В результате подготовка драйвера и установка устройства выполняются отдельными операциями

Один из способов промежуточного размещения драйверов в магазине драйверов — использование pnputil

Существует множество команд, которые можно передать инструменту командной строки pnputil.exe. Пример использования pnputil для размещения драйвера принтера Canon в хранилище драйверов: -

/добавить-драйвер *

команда pnputil

ВАЖНО

Важной частью информации, которая нам понадобится позже, является имя драйвера принтера. Это понадобится нам при установке драйвера принтера в Windows. Эта информация также содержится в файле INF. Имя драйвера в нашем примере будет Canon Generic Plus UFR II

Установка принтера Windows с помощью PowerShell

Предполагая, что мы поместили драйвер в хранилище драйверов Windows с помощью pnputil, мы можем затем использовать общие командлеты PowerShell Add-PrinterPort, Add-PrinterDriver и Add-Printer для установки принтера в Windows.

Как читатель этой публикации, я предполагаю, что вы будете развертывать новые сетевые принтеры, а это означает, что вам необходимо создать порт принтера с помощью командлета Add-PrinterPort перед запуском командлета Add-Printer

Командлет Add-Printer требует передачи параметров DriverName и PortName. Это означает, что порт принтера должен существовать или должен быть создан перед попыткой установки принтера

Примером добавления нового порта принтера может быть:-

Используйте printmanagement.msc, чтобы убедиться, что порт создан

Создан порт принтера

Прежде чем использовать командлет Add-Printer для установки принтера, нам нужно убедиться, что драйвер принтера установлен. Помните файл INF, который мы рассматривали ранее? Он содержит имя драйвера принтера, который будет установлен в магазине драйверов Windows. Мы должны убедиться, что используем одно и то же имя драйвера при использовании командлета Add-PrinterDriver.

Имя драйвера принтера

Как мы видели ранее, имя драйвера принтера, которое мы передали в хранилище драйверов с помощью pnputil.exe, было Canon Generic Plus UFR II

Мы можем использовать командлет Add-PrinterDriver для установки драйвера принтера в Windows ИЗ магазина драйверов. Пример использования PowerShell для установки драйвера принтера в Windows: -

Используйте printmanagement.msc, чтобы убедиться, что драйвер установлен

Консоль управления печатью

Установив драйвер принтера и создав порт принтера, мы можем использовать командлет Add-Printer для установки принтера. Примером добавления нового принтера после того, как порт существует или был создан, может быть:-

Используйте printmanagement.msc, чтобы убедиться, что принтер установлен

Принтер установлен

Лучший способ — создать приложение Win32

Теперь мы должны хорошо понимать шаги, необходимые для добавления принтера в Windows. Подводя итог:-

  1. Определите исходные файлы драйвера принтера, необходимые для установки принтера (из INF-файла)
  2. Определить имя драйвера принтера (из INF-файла)
  3. Используйте pnputil.exe для размещения драйвера принтера в магазине драйверов Windows.
  4. Используйте командлет Add-PrinterPort для создания порта сетевого принтера в Windows
  5. Используйте командлет Add-PrinterDriver для установки драйвера принтера в Windows.
  6. Используйте командлет Add-Printer для установки принтера в Windows

Основная цель этой публикации – выполнить все эти шаги с помощью одного сценария PowerShell, который мы можем развернуть вместе с исходными файлами пакета драйверов в качестве приложения Win32 из Intune

Ранее мы определили исходные файлы, необходимые для создания приложения win32:-

  • cnlb0m.cat
  • CNLB0MA64.inf
  • gpb0.cab

При создании приложения Win32, помимо исходных файлов пакета драйверов, нам также необходимо указать команду установки и удаления. Два сценария PowerShell можно найти ниже.

Установить команду

Скрипту необходимо передать несколько параметров:-

  • PortName Укажите имя создаваемого порта.
  • PrinterIP Сетевой IP-адрес принтера.
  • PrinterName Имя создаваемого принтера (имя принтера также используется в методе обнаружения)
  • DriverName Имя устанавливаемого драйвера принтера (как указано в файле INF)
  • INFFile Имя файла INF для драйвера принтера.

В этот скрипт необходимо передать один параметр:-

Для приложения Win32 также требуется метод обнаружения. Принтер имеет раздел реестра, который можно использовать для обнаружения. Имя ключа будет PrinterName, которое мы указываем при установке принтера. Ключ находится по адресу:-

Метод обнаружения принтера

Для нашего примера мы будем использовать следующие значения для нашего метода обнаружения

HKEY_LOCAL_MACHINE\Software\Microsoft\Windows NT\CurrentVersion\Print\Printers\Canon Printer Upstairs
Имя = «Canon Printer Upstairs»

Создайте файл .Intunewin

1 . Скопируйте исходные файлы и скрипты в одну папку.

2 . Используйте Win32ContentPrepTool для создания файла .intunewin

Intunewinapputil.exe

3 . В центре администрирования Microsoft Endpoint Manager создайте новое приложение Win32

Создать приложение Win32

4 . Выберите файл .intunewin, созданный на шаге 2

Выберите Instll-Printer.intunewin

5 . Заполните информацию о приложении. Не забудьте логотип!

Информация о приложении

6 . Добавьте команды «Установить» и «Удалить»

Установить команду

Команда удаления

<р>7 . Заполните требования к приложению

Требования к приложению

<р>7 . Выберите «Настроить правила обнаружения вручную» и нажмите «Добавить».

Правила обнаружения

<р>8 . Используйте следующие значения для метода обнаружения — настройте ключ/имя соответствующим образом

  • Реестр типов правил
  • Путь к ключу HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Print\Printers\Canon Printer Upstairs
  • Имя значения Имя
  • Сравнение строк метода обнаружения
  • Оператор равно
  • Экономичный принтер Canon наверху

9 . Назначьте приложение соответствующей группе пользователей/устройств

Контролировать установку

Установите приложение win32 с Корпоративного портала, если вы создали «Доступно» назначение для группы пользователей.

Файл журнала создается в системной корневой папке %temp%

Файл журнала

Используйте printmanagement.msc, чтобы убедиться, что принтер, драйвер и порт были успешно установлены/созданы.

Убедитесь, что приложение для установки установлено успешно

Существует множество способов установки принтеров и драйверов печати. Это решение устанавливает оба одновременно. Сценарий Remove-Printer.ps1 удаляет принтер, но оставляет драйвер. Оставить драйвер имеет смысл, поскольку у пользователей могут быть другие принтеры на их устройствах, использующие тот же драйвер, и вы не можете удалить драйвер, если он используется устройством.

Во всяком случае, я хотел, чтобы этот пост проиллюстрировал, насколько творчески вы можете использовать сценарии и приложения Win32, чтобы предоставлять различные решения своим пользователям и устройствам.

Оставьте комментарий, если у вас есть другие способы установить сетевые принтеры для пользователей через Intune на устройствах, присоединенных к Azure AD. Мне всегда нравится видеть, насколько креативны другие.

Бен Уитмор

Microsoft MVP — корпоративная мобильность, сертифицированный инструктор Microsoft и сертифицированный Microsoft 365: эксперт по корпоративным администраторам. Увлеченный сообществом старший консультант по облачным технологиям CloudWay, увлеченный своим делом, с 20-летним опытом внедрения и изменения технологий на предприятии.

Принтеры, честно говоря, хуже всего. С этим общим знанием мы могли бы коллективно вывести кого-то в открытое поле с бейсбольными битами, или мы могли бы сосредоточиться на какой-нибудь изящной PowerShell здесь, которая сделает настройку этих демонических устройств немного менее ужасной.

Групповая политика в первую очередь

Прежде чем вы взглянете на PowerShell, можете ли вы настроить это с помощью групповой политики? Если да, то сделайте это.Серьезно, вы можете настроить принтеры для установки на устройства в зависимости от диапазона IP-адресов, поэтому, если ваша сеть настроена правильно, любой может переместить устройство в любое место в здании, и у него будет ближайший доступный принтер.

PowerShell с сервером печати

Не говоря уже о групповой политике, если у вас есть сервер печати, это легко сделать в PowerShell. Это однострочник.

Красиво и легко. Сервер печати выполнит все шаги. А именно, добавить драйвер в магазин, установить драйвер, создать порт принтера и, наконец, установить принтер. Этого слишком много для одной команды.

Установка с помощью Just PowerShell

Наконец, давайте взглянем на то, что нам нужно сделать, когда нам нужно установить принтер. Здесь может быть немного сложно, и я буду честен с вами, исследование этого дало 87,5%. Нам нужно будет вручную сделать четыре вещи, которые мы упомянули в разделе «Сервер печати». Я предполагаю, что вы обратились к поставщику принтера и получили нужные вам драйверы, а мы просто используем PowerShell, чтобы установить их на машины.

Добавить драйвер в магазин

Microsoft не может иметь драйверы для каждого устройства, которые уже находятся в магазине драйверов; слишком много. Так что вполне вероятно, что принтера у вас уже нет в магазине драйверов. Я использую pnputil.exe для этого. Теперь я слышу ваши жалобы! «Это не PowerShell» и «Как вы смеете». Я только что обнаружил, что это работает лучше всего для меня. Я также запущу его из PowerShell, если это поможет. Вторым препятствием было то, что мне было неясно, могу ли я использовать путь UNC с командой. Я могу честно сказать вам, что потратил 30 минут, пытаясь найти документацию по этому вопросу, и ничего не нашел. Я нашел сообщение на форуме, где человек сказал, что не может найти документацию. Чтобы обойти это, я сделал следующее… попробуйте. Тридцать секунд спустя я могу подтвердить, что pnputil.exe может принимать путь unc. Давайте посмотрим на команду.

Эта команда добавит драйвер в хранилище по адресу C:\Windows\System32\DriverStore. Этот пример будет работать со всеми INF-файлами в указанной папке. Если вы знаете точный файл, будет проще добавить туда полное имя.

Установите драйвер

Pnputil.exe не устанавливает драйвер, а просто делает так, чтобы вы могли установить драйвер. Мы сделаем это с помощью команды Add-PrinterDriver.

Add-PrinterDriver -Name "HP OfficeJet 5200 series PCL-3" -InfPath "C:\Windows\System32\DriverStore\FileRepository\hpygid24_v4.inf_amd64_f312bf16a5228084\hpygid24_v4.inf"

Одна вещь, которую я обнаружил при этом, это то, что я верил, что могу поместить все, что захочу, в раздел имени. После многих ошибок я узнал, что это не так. Если вы откроете файл inf, в нем будут перечислены имена, которые будут работать. Для приведенного выше примера я нашел имя в этом разделе.

Поэтому убедитесь, что это правильно, и драйвер должен установиться без проблем.

Создать порт принтера

Не так много в этом разделе. Запустите Add-PrinterPort, назовите его и укажите IP-адрес устанавливаемого принтера.

Ничего страшного, я даже не могу добавить мимолетную строчку, которую считаю забавной, но редакторы хотели бы, чтобы я перестал размещать ее в блогах. Они не мои начальники, и я делаю то, что хочу.

Установите принтер

Наконец, мы можем запустить Add-Printer. Укажите на установленный вами драйвер, созданный вами порт и назовите эту вещь. В моем примере я назвал его Printy, потому что так моя дочь назвала наш домашний принтер. Я подумывал придумать собственное имя, но, честно говоря, она меня пугает. Я не могу рисковать тем, что она увидит этот блог позже и накажет меня за неуважение к ее схеме именования.

Собираем все вместе

Итак, что мы узнали? Используйте групповую политику, если можете, а если нет, то небольшая подготовительная работа, и PowerShell все равно сможет настроить принтеры без нервного срыва. Всего четыре строки.

pnputil.exe /a "\\fileshare\HPPrinter\*.inf" Add-PrinterDriver -Name "HP OfficeJet 5200 series PCL-3" -InfPath "C:\Windows\System32\DriverStore\FileRepository\hpygid24_v4.inf_amd64_f312bf16a5228084 \hpygid24_v4.inf" Add-PrinterPort -Name "Ports McGee" -PrinterHostAddress "IP-адрес принтера" Add-Printer -DriverName "HP OfficeJet 5200 series PCL-3" -Name "Printy" -PortName "Ports McGee"

Следующий шаг — запустить это на всех компьютерах, которым это необходимо. Я бы рекомендовал PDQ Deploy и PDQ Inventory. Вы сможете получить каждый компьютер, который вам нужен, и установить его на эти машины за считанные минуты.

Всю жизнь Джордан задавался вопросом, почему задачи, которые ему не нравились, не могли быть выполнены сами по себе.В конце концов, ему пришлось сделать это самому. Оказалось, что ему нравилось заставлять задачи выполняться самостоятельно, и PDQ подумал, что это то, о чем он должен говорить в Интернете во время выпивки по четвергам в веб-трансляции PDQ.

Командлет Add-Printer добавляет принтер к указанному компьютеру. Вы можете добавить как локальные принтеры, так и подключения к сетевым принтерам.

Вы не можете использовать подстановочные знаки с Add-Printer. Вы можете использовать Add-Printer в сеансе удаленного взаимодействия Windows PowerShell.

Для запуска Add-Printer могут потребоваться учетные данные администратора.

Примеры

Пример 1. Добавление принтера к локальному компьютеру

Эта команда добавляет к локальному компьютеру принтер с именем mxdw2. Принтер mxdw использует драйвер Microsoft XPS Document Writer v4 и приглашение порта: порт.

Запрос порта: порт запрашивает имя файла для сохранения документа XPS при печати на принтере XPS.

Пример 2. Добавление нового подключения к сетевому принтеру

Эта команда добавляет принтер, указав имя сервера печати и общий принтер на этом сервере.

Параметры

Запускает командлет как фоновое задание. Используйте этот параметр для запуска команд, выполнение которых занимает много времени.

Тип: SwitchParameter
Позиция:Именованный
Значение по умолчанию:Нет
Принять ввод конвейера:False
Допускать подстановочные знаки:False

Указывает максимальный размер (в мегабайтах) удаленного автономного файла журнала филиала для этого принтера. Вы не можете указать этот параметр для очередей без общего доступа или очередей, для которых не включен филиал.

Тип: UInt32
Позиция:Именованный
Значение по умолчанию:Нет
Принять ввод конвейера:False
Допускать подстановочные знаки:False

Запускает командлет в удаленном сеансе или на удаленном компьютере. Введите имя компьютера или объект сеанса, например выходные данные командлета New-CimSession или Get-CimSession. По умолчанию используется текущий сеанс на локальном компьютере.

Тип: CimSession [ ]
Псевдонимы:Сессия
Позиция:Имя
Значение по умолчанию:Нет
Принимать ввод конвейера:False
Допускать подстановочные знаки:False< /td>

Указывает текст, который нужно добавить в поле комментария для указанного принтера.

Тип: Строка
Позиция:Именованный
Значение по умолчанию:Нет
Принять ввод конвейера:False
Допускать подстановочные знаки:False

Указывает имя компьютера, к которому нужно добавить принтер.

< /tr>

Запрашивает подтверждение перед запуском командлета.

Тип: String
Псевдонимы:CN
Позиция:Имя
Значение по умолчанию:Нет
Принимать ввод конвейера:False
Допускать подстановочные знаки:False
< /tr>

Указывает имя общего принтера, к которому необходимо подключиться. Этот параметр является обязательным.

Тип: SwitchParameter
Псевдонимы:cf
Позиция:Имя
Значение по умолчанию:False
Принимать ввод конвейера:False
Допускать подстановочные знаки:False
Тип: Строка
Позиция:0
Значение по умолчанию:Нет
Принять ввод конвейера:False
Допускать подстановочные знаки:False

Указывает тип данных, который принтер использует для записи заданий на печать.

Тип: Строка
Позиция:Именованный
Значение по умолчанию:Нет
Принять ввод конвейера:False
Допускать подстановочные знаки:False

Указывает URL-адрес для прямого обнаружения принтера веб-служб на устройствах (WSD) для добавления к указанному компьютеру.

Тип: Строка
Позиция:Именованный
Значение по умолчанию:Нет
Принять ввод конвейера:False
Допускать подстановочные знаки:False

Указывает многоадресный UUID для обнаружения устройства для порта WSD.

Тип: Строка
Позиция:Именованный
Значение по умолчанию:Нет
Принять ввод конвейера:False
Допускать подстановочные знаки:False

Указывает, что удаленное ведение журнала в филиале отключено. Вы не можете указать этот параметр для очередей без общего доступа.

Тип: SwitchParameter
Позиция:Именованный
Значение по умолчанию:Нет
Принять ввод конвейера:False
Допускать подстановочные знаки:False

Указывает имя драйвера принтера для принтера.

Тип: Строка
Позиция:1
Значение по умолчанию:Нет
Принять ввод конвейера:False
Допускать подстановочные знаки:False

Указывает URL-адрес, имя хоста или IP-адрес для прямого обнаружения принтера IPP (Internet Printing Protocol) для добавления к указанному компьютеру.

Тип: Строка
Позиция:Именованный
Значение по умолчанию:Нет
Принять ввод конвейера:False
Допускать подстановочные знаки:False

Указывает, сохраняются ли задания на печать в очереди.

Тип: SwitchParameter
Позиция:Именованный
Значение по умолчанию:Нет
Принять ввод конвейера:False
Допускать подстановочные знаки:False

Указывает местоположение принтера.

Тип: Строка
Позиция:Именованный
Значение по умолчанию:Нет
Принять ввод конвейера:False
Допускать подстановочные знаки:False

Указывает имя добавляемого принтера.

Тип: Строка
Позиция:0
Значение по умолчанию:Нет
Принять ввод конвейера:Истина
Допускать подстановочные знаки:False

Указывает разрешения для принтера в виде строки языка определения дескрипторов безопасности (SDDL).

Тип: Строка
Позиция:Именованный
Значение по умолчанию:Нет
Принять ввод конвейера:False
Допускать подстановочные знаки:False

Указывает имя порта, который используется или создается для принтера.

Тип: Строка
Позиция:Именованный
Значение по умолчанию:Нет
Принять ввод конвейера:False
Допускать подстановочные знаки:False

Указывает имя процессора печати, используемого принтером.

Тип: Строка
Позиция:Именованный
Значение по умолчанию:Нет
Принять ввод конвейера:False
Допускать подстановочные знаки:False

Указывает относительный приоритет очереди.

Тип: UInt32
Позиция:Именованный
Значение по умолчанию:Нет
Принять ввод конвейера:False
Допускать подстановочные знаки:False

Указывает, опубликован ли принтер в службе сетевых каталогов.

Тип: SwitchParameter
Позиция:Именованный
Значение по умолчанию:Нет
Принять ввод конвейера:False
Допускать подстановочные знаки:False

Указывает режим рендеринга для принтера. Вы можете указать один из следующих режимов рендеринга:

  • SSR, рендеринг на стороне службы
  • КСО. Рендеринг на стороне клиента
  • Филиал. Филиал

Указывает путь и имя страницы-разделителя, которая будет использоваться принтером.

Тип: Строка
Позиция:Именованный
Значение по умолчанию:Нет
Принять ввод конвейера:False
Допускать подстановочные знаки:False

Указывает, следует ли предоставлять общий доступ к принтеру в сети. Вы можете определить имя общего доступа к принтеру, указав ShareName. Если имя_ресурса не указано, в качестве общего имени используется имя принтера.

Тип: SwitchParameter
Позиция:Именованный
Значение по умолчанию:Нет
Принять ввод конвейера:False
Допускать подстановочные знаки:False

Указывает имя для общего доступа к принтеру в сети. Чтобы открыть общий доступ к принтеру, укажите параметр Shared.

Тип: Строка
Позиция:Именованный
Значение по умолчанию:Нет
Принять ввод конвейера:False
Допускать подстановочные знаки:False

Указывает время начала доступности принтера.

Тип: UInt32
Позиция:Именованный
Значение по умолчанию:Нет
Принять ввод конвейера:False
Допускать подстановочные знаки:False

Указывает максимальное количество одновременных операций, которое может быть установлено для запуска командлета. Если этот параметр опущен или введено значение 0, Windows PowerShell® вычисляет оптимальный предел регулирования для командлета на основе количества командлетов CIM, запущенных на компьютере. Предел регулирования применяется только к текущему командлету, а не к сеансу или компьютеру.

Тип: Int32
Позиция:Именованный
Значение по умолчанию:Нет
Принять ввод конвейера:False
Допускать подстановочные знаки:False

Указывает время окончания доступности принтера.

Тип: UInt32
Позиция:Именованный
Значение по умолчанию:Нет
Принять ввод конвейера:False
Допускать подстановочные знаки:False

Показывает, что произойдет, если командлет запустится. Командлет не запущен.

< /tr>

Позволяет администратору связать данный принтер с определенным приложением Workflow. Этот параметр не позволяет администратору переопределить связь между устройством и приложением, созданную с помощью службы метаданных устройства.

В предыдущей статье мы рассмотрели сценарии VBS старой школы, которые можно использовать для управления принтерами и операциями печати во всех версиях Windows, начиная с Windows XP. Сегодня мы рассмотрим типовые команды для установки, управления и удаления принтеров, портов печати, драйверов и очередей с помощью PowerShell. Эти способы управления принтерами из PowerShell CLI можно использовать в современных операционных системах — Windows 10/8.1 и Windows Server 2019/2016/2012 R2.

Модуль PowerShell: Управление печатью

Вместе с выпуском Windows 8.1 и Windows Server 2012 R2 Microsoft выпустила новую версию PowerShell 4.0 (часть Windows Management Framework 4.0), которая значительно расширила список командлетов управления сервером печати на базе Windows. Вы можете получить полный список командлетов управления печатью, драйверами и очередями печати, доступных в модуле PrintManagement в Windows 10 (PowerShell v5), с помощью следующей команды:

Get-Command – модуль управления печатью

Модуль 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.

Чтобы получить подробную информацию о синтаксисе любой команды, используйте следующую команду:

Примеры использования команд:

Давайте рассмотрим несколько примеров типичных задач управления принтером с помощью PowerShell в Windows 10.

Добавление драйверов принтера в DriverStore

Затем установите в системе новый драйвер принтера. Например, вы хотите установить популярный драйвер печати «HP Universal Printing PCL 6». Согласно документации, команда PowerShell для добавления драйвера печати должна выглядеть следующим образом:

Add-PrinterDriver -Name "HP Universal Printing PCL 6" -InfPath "C:\Distr\HP-pcl6-x64\hpcu118u.inf"

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


Add-PrinterDriver: один или несколько указанных параметров для этой операции имеют недопустимое значение. В строке: 1 символ: 1+ Add-PrinterDriver -Name «HP Universal Printing PCL 6» -InfPath «C:\ Di …+ ~~~~~~~~~~~~~~~~~~~~~~~~+ CategoryInfo: InvalidArgument: (MSFT_PrinterDriver:ROOT/StandardCimv2/MSFT_PrinterDriver) [Add-PrinterDriver], CimException + FullyQualifiedErrorId: HRESULT 0x80070057, Add-PrinterDriver

Получается, что драйвер из 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? Указанное имя драйвера принтера должно точно совпадать с его внутренним системным именем, иначе при установке драйвера появится ошибка. Правильное имя драйвера можно узнать с помощью команды get-printerdriver на компьютере, на котором этот драйвер печати уже установлен, или вручную изучив INF-файл драйвера.

Как установить принтер с помощью PowerShell?

Создайте IP-порт для сетевого принтера (здесь можно указать как IP-адрес сетевого принтера, так и имя удаленного сервера печати):

Add-PrinterPort -Name "IP_192.168.10.26" -PrinterHostAddress "192.168.10.26"

Перед добавлением нового IP-порта печати вы можете проверить, существует ли он:

$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 hp3027_Office1_Buh -DriverName "HP LaserJet M3027 MFP PCL6 Class Driver" -PortName IP_192.168.10.26 -Shared -ShareName "hp3027_1_BUh" –Published

Примечание. Обратите внимание, что для выполнения одной и той же операции (установки и предоставления общего доступа к принтеру) с помощью сценариев VBS (сценариев администрирования печати) необходимо выполнить две разные команды.

После выполнения этих команд в системе появится новый общий принтер с именем «hp3027_Office1».

Чтобы переименовать принтер, просто выполните команду:

Переименовать-Принтер-Имя "hp3027_1_Buh"-НовоеИмя "hp3027_F1_Salary"

Список установленных принтеров на сервере печати

Покажем полный список принтеров, установленных на этом компьютере:

Как видите, команда показывает имя принтера, тип (локальный или сетевой), драйвер, порт печати, является ли принтер общим и опубликованным в Active Directory.

Большинство командлетов PrintManagement можно использовать для просмотра состояния и управления принтерами, драйверами и очередями печати на удаленных компьютерах (серверах печати). Имя удаленного компьютера или сервера указывается в качестве аргумента параметра –ComputerName.

Вы можете получить информацию об установленных принтерах на удаленном компьютере с помощью команды PowerShell:

Get-Printer -ComputerName rome-prnt1 | Имя списка форматов, имя_драйвера

Чтобы отобразить только список общих принтеров, используйте команду:

Get-Printer -ComputerName rome-prnt1 | где Shared -eq $true | имя фл

Подключение к общему сетевому принтеру с помощью PowerShell

Чтобы подключить общий принтер с сервера печати, используйте команду:

Add-Printer -ConnectionName \\rome-prnt1\HP3027

Windows 10 использует последний принтер, который использовался для печати, в качестве принтера по умолчанию. Если вы хотите использовать фиксированный принтер по умолчанию, выполните команду:

Set-ItemProperty -Path "HKCU:\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Windows" -Name "LegacyDefaultPrinterMode" -Value 1 – Force

Читайте также:

Тип: SwitchParameter
Псевдонимы:wi
Позиция:Имя
Значение по умолчанию:False
Принимать ввод конвейера:False
Допускать подстановочные знаки:False