Написание пакетного файла для установки сетевых принтеров

Вопрос или проблема

Я хотел бы написать пакетный файл для установки нескольких сетевых принтеров в нашем офисе на ПК. Я попытался создать файл с одним принтером, используя драйвер Generic/Text и IP-адрес 192.168.11.70. Когда я пытаюсь запустить его, он просто говорит, что аргумент недопустим. Я проверил пути к файлам для драйверов принтеров. Что я делаю не так?

Вот код:

cscript %WINDIR%\System32\Printing_Admin_Scripts\en-US\Prnport.vbs -a -r IP_192.168.100.70 -h 192.168.100.70 -o raw -n 9100
rundll32 printui.dll,PrintUIEntry /ia /m "Generic/Text" /f "C:\prnge001.inf"
rundll32 printui.dll,PrintUIEntry /if /b "Printer2" /f "C:\prnge001.inf" /r "IP_192.168.100.70" /m "Generic/Text"

Вот сообщение об ошибке:

введите описание изображения здесь

https://drive.google.com/open?id=0ByhxkwJBdusDczU2MXhrYldfLUU

Это vbs/wmi скрипт, который нужно запускать из командной строки с правами администратора.

cscript printer.vbs -p "Название принтера" -d "HP Universal Printing PS (v6.0.0)" -i "prnhp001.inf" -h "\\<сервер>\drivers\Printer\prnhp001" -u ad\username -w <пароль> -s <имя компьютера>

Я вручную взял все необходимые скрипты из
C:\Windows\System32\Printing_Admin_Scripts\en-US

И объединил необходимые части для установки принтера с нуля, включая удаление старого принтера с тем же именем. Затем я переписал части кода, чтобы сделать его еще более функциональным. CLI для добавления драйверов в предоставленном скрипте от Microsoft был ужасным и приводил к командам длиной более 200 символов при использовании сетевых ресурсов. Поэтому я переписал код и оптимизировал процесс. Кроме того, если вы используете стандартные скрипты от Microsoft, вы в конечном итоге подключаетесь и отключаетесь от одного и того же компьютера 3-5 раз при ручном использовании предоставленных скриптов. Это подвержено ошибкам, и обычно единственным шагом, который терпит неудачу, является запрос на подключение к удаленному компьютеру, по крайней мере, когда я это делаю, и тогда вам нужно вручную повторить каждую команду как минимум 2 или 3 раза. Процесс повторного подключения также занимает много времени, поэтому мой скрипт работает намного быстрее, частично из-за этого.

Ответ или решение

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

Исходный код:

cscript %WINDIR%\System32\Printing_Admin_Scripts\en-US\Prnport.vbs -a -r IP_192.168.100.70 -h 192.168.100.70 -o raw -n 9100
rundll32 printui.dll,PrintUIEntry /ia /m "Generic/Text" /f "C:\prnge001.inf"
rundll32 printui.dll,PrintUIEntry /if /b "Printer2" /f "C:\prnge001.inf" /r "IP_192.168.100.70 /m "Generic/Text"

Ошибки в коде

  1. Неправильные кавычки. В строке с командой /if отсутствует закрывающая кавычка после параметра /r, а также присутствует неправильное использование кавычки перед параметром /m.
  2. Адрес IP принтера. Убедитесь, что IP-адрес принтера верен. В вашем примере вы используете 192.168.100.70, но в первой строке вы использовали 192.168.11.70.
  3. Неправильная команда для установки драйверов. Убедитесь, что путь к файлу .inf правильный и что вы используете корректное имя драйвера.

Исправленный код

Вот исправленный пакетный файл на основе приведенного вами кода:

@echo off
setlocal

rem Устанавливаем принтер по IP
cscript %WINDIR%\System32\Printing_Admin_Scripts\en-US\Prnport.vbs -a -r IP_192.168.100.70 -h 192.168.100.70 -o raw -n 9100

rem Установка драйвера принтера
rundll32 printui.dll,PrintUIEntry /ia /m "Generic/Text" /f "C:\prnge001.inf"

rem Подключение к принтеру
rundll32 printui.dll,PrintUIEntry /if /b "Printer2" /f "C:\prnge001.inf" /r "IP_192.168.100.70" /m "Generic/Text"

endlocal

Объяснение изменений

  1. Корректировка синтаксиса: Исправлены кавычки и добавлены закрывающие кавычки.
  2. Сохранили порядок: Порядок команд сохранен, чтобы избежать повторного подключения к сети.
  3. Использование локальных переменных: Для улучшения читаемости кода провели локализацию переменных, что полезно для больших сценариев.

Рекомендации по тестированию

  • Запуск от имени администратора: Убедитесь, что вы запускаете файл с правами администратора, так как установка принтеров требует повышенных привилегий.
  • Проверка драйверов: Убедитесь, что файлы драйверов (например, prnge001.inf) существуют и читабельны по указанному пути.
  • Подключение к сети: Убедитесь, что сетевые настройки вашего компьютера и принтеров правильно настроены.

Заключение

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

Оцените материал
Добавить комментарий

Капча загружается...