Вопрос или проблема
Я хотел бы написать пакетный файл для установки нескольких сетевых принтеров в нашем офисе на ПК. Я попытался создать файл с одним принтером, используя драйвер 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"
Ошибки в коде
- Неправильные кавычки. В строке с командой
/if
отсутствует закрывающая кавычка после параметра/r
, а также присутствует неправильное использование кавычки перед параметром/m
. - Адрес IP принтера. Убедитесь, что IP-адрес принтера верен. В вашем примере вы используете
192.168.100.70
, но в первой строке вы использовали192.168.11.70
. - Неправильная команда для установки драйверов. Убедитесь, что путь к файлу
.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
Объяснение изменений
- Корректировка синтаксиса: Исправлены кавычки и добавлены закрывающие кавычки.
- Сохранили порядок: Порядок команд сохранен, чтобы избежать повторного подключения к сети.
- Использование локальных переменных: Для улучшения читаемости кода провели локализацию переменных, что полезно для больших сценариев.
Рекомендации по тестированию
- Запуск от имени администратора: Убедитесь, что вы запускаете файл с правами администратора, так как установка принтеров требует повышенных привилегий.
- Проверка драйверов: Убедитесь, что файлы драйверов (например,
prnge001.inf
) существуют и читабельны по указанному пути. - Подключение к сети: Убедитесь, что сетевые настройки вашего компьютера и принтеров правильно настроены.
Заключение
С помощью исправленного пакетного файла вы сможете установить несколько сетевых принтеров эффективно и быстро. Регулярно проверяйте корректность путей к драйверам и IP-адресов принтеров, чтобы минимизировать ошибки в процессе установки.