Мы уже знаем что с помощью PowerShell можно автоматизировать типовые задачи управления принтерами и драйверами печати в Windows. Также одним из широко известных способов управления принтерами в системах Windows различных версий является хост-процесс rundll32.exe, которому передается имя библиотеки printui.dll и точка входа в нее (PrintUIEntry). А чуть ниже будет дан еще один штатный, уже третий, способ управления принтерами - с помощью vbs-скриптов.
Итак использование rundll32 printui.dll,PrintUIEntry (чтобы получить все эти параметры, нужно вызвать с ключом /? окно в котором отобразится полный список с примерами):
rundll32 printui.dll,PrintUIEntry [параметры] [@командный файл]
/a[имя_файл] имя двоичного файла
/b[имя] основное имя принтера
/c [имя] UNC-имя компьютера, где выполняется команда
/dl удаление локального принтера
/dn удаление подключения к сетевому принтеру
/dd удаление драйвера принтера
/e вывод параметров настройки печати
/f[file] или информационный файл, или выходной файл
/F[file] размещение INF-файла, от которого может зависеть INF-файл, указанный в параметре /f
/ga добавление подключений компьютеров к принтеру (подключение распространяется на компьютер пользователя в момент входа в систему)
/ge перечисление подключений компьютеров к принтеру
/gd удаление подключений компьютеров к принтеру (подключение удаляется в момент входа пользователя в систему)
/h[arch] архитектура драйвера, принимает значения: x86, x64 или Itanium
/ia установка драйвера принтера с помощью информационного файла
/id установка драйвера принтера с помощью мастера установки драйверов принтеров
/if установка принтера с помощью информационного файла
/ii установка принтера с помощью мастера установки принтеров и информационного файла
/il установка принтера с помощью мастера установки принтеров
/in добавление подключения к принтеру
/ip установить принтер с помощью мастера установки сетевых принтеров
/j[provider] имя системы печати
/k печать пробной страницы на выбранном принтере, не может использоваться с другими командами установки принтера
/l[path] путь к исходному размещению драйвера принтера
/m[model] имя модели драйвера принтера
/n[name] имя принтера
/o показать очередь заданий на печать
/p отображение свойств принтера
/q тихий режим без вывода сообщений об ошибках
/r[port] имя порта
/s показать свойства сервера
/Ss запись параметров принтера в файл
/Sr чтение параметров принтера из файла
Флаги при записи или чтении параметров принтера, помещаемые в конце команды:
2 PRINTER_INFO_2
7 PRINTER_INFO_7
c профиль цвета
d PrinterData
s дескриптор безопасности
g глобальный DevMode
m минимальный набор параметров
u пользовательский DevMode
r разрешить конфликты имен
f принудительное использование имени
p сопоставить порт
i кофликт имен
/u использовать существующий драйвер принтера если он установлен
/t[#] номер начальной страницы (с нуля)
/v[версия] - версия драйвера, принимает одно из следующих значений: "Тип 2 - режим ядра" или "Тип 3 - пользовательский режим"
/w запрос драйвера у пользователя, если драйвер не найден в inf-файле
/y назначить принтер используемым по умолчанию
/Xg получить параметры принтера
/Xs установить параметры принтера
/z не разрешать автоматический общий доступ к этому принтеру
/Y не генерировать автоматически имя принтера
/K изменяет значения /h на принятие 2,3,4 для x86, x64 или Itanium и /v на принятие 3 для "Тип 3 - пользовательский режим"
/Z общий доступ к принтеру, используется только вместе с /if
/? вывод справки
@[file] файл аргументов командной строки
/Mw[сообщение] отображать предупредительное сообщение перед выполнение команды
/Mw[сообщение] отображать сообщение подтверждения перед выполнением команды
/W[флаги] указывает флаги и ключи для мастеров (добавления принтера и драйвера)
r позволяет этим мастерам перезапускаться с последней страницы
/G[флаги] указывает глобальные флаги и ключи
w подавляет предупреждения интерфеса пользователя по установке драйвера (супер тихий режим)
Примеры:
Запуск свойств сервера печати:
rundll32 printui.dll,PrintUIEntry /s /t1 /с\\machine
Запуск свойств принтера:
rundll32 printui.dll,PrintUIEntry /p /n\\machine\printer
Локальный запуск мастера установки принтеров:
rundll32 printui.dll,PrintUIEntry /il
Запуск мастера установки принтеров на компьютере \\machine:
rundll32 printui.dll,PrintUIEntry /il /c\\machine
Запуск показа очереди:
rundll32 printui.dll,PrintUIEntry /o /n\\machine\printer
Запуск установки с помощью INF-файла:
rundll32 printui.dll,PrintUIEntry /if /b "Test Printer" /f c:\infpath\infFile.inf /r "lpt1:" /m "Brother DCP-128C"
Запуск установки с помощью INF-файла (с INF-зависимостью). В этом примере файл prnao002.inf зависит от ntprint.inf
rundll32 printui.dll, PrintUIEntry /ia /m "Brother DCP-128C" /K /h x64 /v 3 /f "c:\infpath\prnbr002.inf" /F "c:\infpath\ntprint.inf"
Запуск мастера установки принтера с помощью INF-файла:
rundll32 printui.dll,PrintUIEntry /ii /f c:\infpath\infFile.inf
Добавление принтера с помощью встроенного драйвера принтера:
rundll32 printui.dll,PrintUIEntry /if /b "Test Printer" /r "lpt1:" /m "Brother DCP-128C"
Добавление подключений компьютеров к принтеру (подключение распространяется на компьютер пользователя в момент входа в систему):
rundll32 printui.dll,PrintUIEntry /ga /c\\machine /n\\machine\printer /j"LanMan Print Services"
Удаление подключений компьютеров к принтеру (подключение удаляется в момент входа пользователя в систему):
rundll32 printui.dll,PrintUIEntry /gd /c\\machine /n\\machine\printer
Перечисление подключений компьютеров к принтеру:
rundll32 printui.dll,PrintUIEntry /ge /c\\machine
Добавление принтера с помощью INF-файла:
rundll32 printui.dll,PrintUIEntry /ia /c\\machine /m "Brother DCP-128C" /h "x86" /v "Type 3 - User Mode" /f c:\infpath\infFile.inf
Добавление принтера с помощью INF-файла:
rundll32 printui.dll,PrintUIEntry /ia /K /c\\machine /m "Brother DCP-128C" /h "x86" /v 3
Добавление встроенного драйвера принтера:
rundll32 printui.dll,PrintUIEntry /ia /c\\machine /m "Brother DCP-128C" /h "Intel" /v "Type 3 - Kernel Mode"
Удаление драйвера принтера:
rundll32 printui.dll,PrintUIEntry /dd /c\\machine /m "Brother DCP-128C" /h "x86" /v "Type 3 - User Mode"
Удаление драйвера принтера:
rundll32 printui.dll,PrintUIEntry /dd /K /c\\machine /m "Brother DCP-128C" /h "x86" /v 3
Назначение принтера используемым по умолчанию:
rundll32 printui.dll,PrintUIEntry /y /n "printer"
Указание описания принтера:
rundll32 printui.dll,PrintUIEntry /Xs /n "printer" comment "My Cool Printer"
Получение параметров принтера:
rundll32 printui.dll,PrintUIEntry /Xg /n "printer"
Получение параметров принтера и запись их в файл:
rundll32 printui.dll,PrintUIEntry /f "results.txt" /Xg /n "printer"
Справка об установке параметров принтера:
rundll32 printui.dll,PrintUIEntry /Xs /n "printer" ?
Запись всех параметров принтера в файл:
rundll32 printui.dll,PrintUIEntry /Ss /n "printer" /a "file.dat"
Восстановление всех параметров принтера из файла:
rundll32 printui.dll,PrintUIEntry /Sr /n "printer" /a "file.dat"
Запись сведений принтера уровня 2 в файл:
rundll32 printui.dll,PrintUIEntry /Ss /n "printer" /a "file.dat" 2
Восстановление дескриптора безопасности из файла:
rundll32 printui.dll,PrintUIEntry /Sr /n "printer" /a "file.dat" s
Восстановление глобального devmode и данных принтера из файла:
rundll32 printui.dll,PrintUIEntry /Sr /n "printer" /a "file.dat" g d
Восстановление минимального набора параметров из файла и разрешение имени порта:
rundll32 printui.dll,PrintUIEntry /Sr /n "printer" /a "file.dat" m p
Включение исполнения на стороне клиента для принтера:
rundll32 printui.dll,PrintUIEntry /Xs /n "printer" ClientSideRender enabled
Отключение исполнения на стороне клиента для принтера:
rundll32 printui.dll,PrintUIEntry /Xs /n "printer" ClientSideRender disabled
Функционала команды rundll32 printui.dll,PrintUIEntry достаточен для автоматизации базовых операций с принтерами и до сих пор полностью поддерживается Microsoft, однако если использование vbs-скриптов у вас не заблокировано службой безопасности, то с точки зрения удобства администратора они могут быть и предпочтительнее.
Для управления принтерами Microsoft разработала несколько vbs скриптов, позволяющих управлять принтерами и очередями печати, устанавливать и удалять драйвера принтеров и т.д. Эти скрипты присутствуют во всех версиях Windows (начиная с Vista и Windows Server 2008) и находятся в каталоге
C:\Windows\System32\Printing_Admin_Scripts\en-US\
В каталоге есть следующие vbs скрипты:
Prncnfg.vbs – скрипт для отображения информации о настройках принтера;
Prndrvr.vbs – управление драйверами принтеров (установка/удаление драйвера);
Prnjobs.vbs – управления заданиями печати;
Prnmngr.vbs – управление принтерами (в т.ч. создание и удаление принтера в системе);
Prnport.vbs – управление подключением к удаленному принтеру по TCP/IP порту;
Prnqctl.vbs – управление выполнением задания на печать;
Pubprn.vbs – управление публикацией принтеров в Active Directory.
Рассмотрим типовые сценарии использования этих vbs скриптов.
Установка драйвера принтера из командной строки
Предположим, вам необходимо установить на компьютере пользователя универсальный драйвер печати HP (HP Universal Printer Driver). Скачайте соответствующую версию драйвера с сайта производителя и распакуйте его в произвольный каталог (например, C:\drv\HP Universal Print Driver).
Права на установки и настройку локальных принтеров есть у членов локальных Administrators (Администраторы), Print Operators (Операторы печати) или Server Operators (Операторы сервера).
Установим драйвер принтера командой:
cscript "C:\Windows\System32\Printing_Admin_Scripts\en-US\prndrvr.vbs" -a -m "HP Universal Printing PCL 6" -i "C:\drv\HP Universal Print Driver\hpcu160u.inf"
prndrvr.vbs скрипт установки драйвера печати принтера
Рассмотрим параметры команды:
-а – добавить драйвер принтера;
-m "HP Universal Printing PCL 6" – имя драйвера принтера;
-i “путь” – полный путь к inf файлу драйвера.
После установки драйвера печати, он появится в свойствах сервера печати (Control Panel\Hardware and Sound\Devices and Printers ->Print Server Properties).
Установка нового принтера из командной строки
С помощью следующей команды можно установить новый принтер с именем HP5525, воспользовавшись ранее установленным драйвером печати HP Universal Printing PCL 6:
cscript "C:\Windows\System32\Printing_Admin_Scripts\en-US\prnmngr.vbs" -a -p "HP5525" -m "HP Universal Printing PCL 6" -r "lpt1:"
-a – устанавливается новый локальный принтер;
-p "HP5525" – отображаемое имя принтера;
-m "HP Universal Printing PCL 6" – используемый драйвер печати;
-r "lpt1:" – имя используемого локального порта печати. В этом случае печать должна осуществляться через LPT порт. Здесь может быть указан параллельный порт (LPT1:, LPT2:), последовательный (СОМ1:, COM2: — перед установкой убедитесь что данный COM порт не используется другим устройством) или USB-порт (USB001 и т.д.).
Управление принтером по умолчанию
Из командной строки вы можете выбрать какой принтер должен использоваться при печати по умолчанию. С помощью следующей команды можно вывести список всех доступных принтеров:
cscript "C:\Windows\System32\Printing_Admin_Scripts\en-US\prnmngr.vbs" –l
Текущий принтер по-умолчанию можно получить так:
cscript "C:\Windows\System32\Printing_Admin_Scripts\en-US\prnmngr.vbs" –g
Чтобы выбрать другой принтер для печати по умолчаню, выполните:
cscript "C:\Windows\System32\Printing_Admin_Scripts\en-US\prnmngr.vbs" -t –р "HP5525"
Создаем TCP/IP порт для сетевого принтера
Если вы хотите подключить сетевой принтер, необходимо сначала создать для него сетевой порт (допустим ip адрес принтера 192.168.10.26):
cscript "C:\Windows\System32\Printing_Admin_Scripts\en-US\Prnport.vbs" -a -r IP_192.168.10.26 -h 192.168.10.26 -o raw -n 9100
-r IP_192.168.10.26 – имя сетевого порта;
-h 192.168.10.26 – IP адрес устройства;
-o raw – тип порта (raw или lpr);
-n 9100 — номер TCP порта устройства (обычно 9100).
А потом установим в системе новый сетевой принтер:
cscript "C:\Windows\System32\Printing_Admin_Scripts\en-US\prnmngr.vbs" -a -p "HP5525" -m "HP Universal Printing PCL 6" -r "IP_192.168.10.26"
После окончания работы скрипта в системе появится новый принтер с именем HP5525
Отправка на печать тестовой страницы
Чтобы отправить тестовую страницу на печать на созданном ранее принтере, выполните:
cscript "C:\Windows\System32\Printing_Admin_Scripts\en-US\prnqctl.vbs” -e -p "HP5525"
Управление очередями печати из командной строки
С помощью скрипта prnjobs.vbs вы можете просматривать задания печати в очередях. Чтобы вывести все задания печати для всех локальных принетров, выполните команду:
cscript "C:\Windows\System32\Printing_Admin_Scripts\en-US\prnjobs.vbs” –l
Чтобы вывести задания на конкретном принтере, нужно указать его имя:
cscript "C:\Windows\System32\Printing_Admin_Scripts\en-US\prnjobs.vbs” –l –p HP5525
Для очистки очереди печати, на одном принтере выполните команду:
cscript "C:\Windows\System32\Printing_Admin_Scripts\en-US\prnjobs.vbs” –x –p HP5525
Либо можно быстро очистить все очереди для всех принтеров (так гораздо удобнее, чем вручную очищать очередь печати):
cscript "C:\Windows\System32\Printing_Admin_Scripts\en-US\prnjobs.vbs” –x
Включить общий доступ к принтеру из командной строки
Все новые принтеры, которое вы установили в Windows из командной строки являются локальными. Вы можете предоставить к ним общий доступ другим пользователей из графического интерфейса Windows (см. статью). Также вы можете открыть общий доступ к принетру из командной строки. Например, вы хотите дать доступ к своему общему принтеру HP5525, опубликовав его под именем HP5525_Shared. Используйте команду:
script "C:\Windows\System32\Printing_Admin_Scripts\en-US\prncnfg.vbs” -t -p HP5525 -h "HP5525_Shared" +shared
Чтобы отключить общий доступ к принтеру, выполните:
script "C:\Windows\System32\Printing_Admin_Scripts\en-US\prncnfg.vbs” -t -p "HP5525" -shared
Аналогично вы можете опубликовать принтер в Active Directory:
script "C:\Windows\System32\Printing_Admin_Scripts\en-US\prncnfg.vbs” -t -p HP5525 +published
Чтобы отменить публикацию в AD для принтера, используйте аргумент «-published».
Как подключить сетевой принтер из командной строки
Чтобы подключить сетевой принтер, подключенный к другому компьютеру, используйте команду:
cscript "C:\Windows\System32\Printing_Admin_Scripts\en-US\prnmngr.vbs" -ac -p “\\prnt01\hp2000”
Удаление принтера и драйвера печати из командной строки
Полный список принетров в системе можно вывести так:
cscript "C:\Windows\System32\Printing_Admin_Scripts\en-US\prnmngr.vbs" -l
Удалить принтер можно командой:
cscript "C:\Windows\System32\Printing_Admin_Scripts\en-US\prnmngr.vbs" -d -p "HP5525"
Драйвер печати удаляется так:
cscript "C:\Windows\System32\Printing_Admin_Scripts\en-US\prndrvr.vbs" -d -m "HP Universal Printing PCL 6" -e "Windows x64" -v 3
Полный список аргументов этих скриптов доступен во встроенной помощи - просто запустите в командной строке файл сценария без параметров: cscript.exe scriptname.vbs
Удачи.
No comments:
Post a Comment
А что вы думаете по этому поводу?