ShS's Blog

Just another sysadmin's weblog

Скрипт, выполняющий подключение сетевого принтера и установку его принтером по умолчанию

Posted by shs на 2009/12/01

Очень простой скрипт, который удобно использовать, как логон-скрипт, в групповых политиках. Он подключает «расшаренный» сетевой принтер и назначает его принтером по умолчанию. Если этот скрипт разместить в папке NETLOGON на DC, то его запуск (при помощи групповых политик) можно производить следующим образом:
%LOGONSERVER%\NETLOGON\addPrn.js \\PrintServerName\SharedPrinterName

И так, сам скрипт:

//*****************************************************
//JScript 2005 ShS addPrn.js
//Подключение сетевого принтера и установка его принтером по умолчанию
//Пример запуска: %LOGONSERVER%\NETLOGON\addPrn.js \\PrintServer\HPLJ2200DN(23)
//*****************************************************
var WshNetwork,
   objArgs,
   strErrMsg,
   strPrinterPath;
//Путь к подключаемому принтеру   берем из параметров запуска
objArgs=WScript.Arguments.Unnamed;
strPrinterPath=objArgs.Item(0);
//
WshNetwork=WScript.CreateObject("Wscript.Network");
try
   {
   WshNetwork.AddWindowsPrinterConnection(strPrinterPath);
   WshNetwork.SetDefaultPrinter(strPrinterPath);
   }
catch (objError)
   {
   if (objError !=0)
      {
      strErrMsg = "Произошла ошибка при подключении сетевого принтера -  "+strPrinterPath+"\n"+
               "Скорее всего, указанный сетевой путь не существует"+"\n\n"+
               "Обратитесь к системному администратору по тел. 1333"
               //"Код ошибки: "+ objError.number;
      WScript.Echo(strErrMsg);
      }
   }

Пояснять здесь особенно нечего, кроме применения конструкции try…catch…finaly. Эта конструкция реализует обработчик ошибок. Внутри блока try находится защищенный блок кода.

try
   {
   WshNetwork.AddWindowsPrinterConnection(strPrinterPath);
   WshNetwork.SetDefaultPrinter(strPrinterPath);
   }

Если во время выполнения защищенного блока кода произойдет ошибка (например, из-за того, что принт-сервер почему-то оказался недоступен), то это не приведет, как обычно, к появлению на экране стандартного сообщения об ошибке и остановке выполнения скрипта. Вместо этого управление будет передано в блок кода catch, где мы, убедившись, что ошибка имела место быть, и был сгенерирован объект, содержащий информацию об ошибке…

catch (objError)
   {
   if (objError !=0)
      {...

… сформируем свое сообщение об ошибке на русском языке и выведем его на экран:

strErrMsg = "Произошла ошибка при подключении сетевого принтера -  "+strPrinterPath+"\n"+
               "Скорее всего, указанный сетевой путь не существует"+"\n\n"+
               "Обратитесь к системному администратору по тел. 1333"
               //"Код ошибки: "+ objError.number;
      WScript.Echo(strErrMsg);

Upd. [20101203]
Отмазка: использование логон скрипта для подключения принтера — морально устаревшее решение. Для счатсливых обладателей (хотя бы одного компьютера) с win Vistа и выше на борту, православнее будет использовать GPP
http://technet.microsoft.com/en-us/library/cc731892(WS.10).aspx
и http://www.techdays.ru/videos/1066.html

Реклама

комментариев 6 to “Скрипт, выполняющий подключение сетевого принтера и установку его принтером по умолчанию”

  1. H0mRk said

    какую часть скрипта убрать чтобы принтер установился не по умолчанию и куда кидать скрипт?

    • shs said

      >какую часть скрипта убрать чтобы принтер установился не по умолчанию
      Очевидно, что эту: WshNetwork.SetDefaultPrinter(strPrinterPath);

      >и куда кидать скрипт?
      вопрос из разряда следующих: «а правда, что 2 больше?»

  2. А сейчас для этих целей есть group policy preferences (GPP).:-). Кстати, может пригодиться — публикация драйверов принтеров через GPO+WSH+WMI+printUI.

    • shs said

      >А сейчас для этих целей есть group policy preferences (GPP).:-).

      знаю-знаю ;), этот скрипт предназначен для ретроградов, у которых нет ни одного компа с ОС от Vista и выше (для того чтобы рулить GPP).

      • Рулить GPP можно с Windows Server 2008, например. А клиентские компоненты GPP встают и на XP через WSUS вполне успешно.

        • shs said

          можно, конечно, кто ж спорит?

          Отмазка: этот скрипт написан в 2005 году. Если у вас в продакшине есть компьютеры с ОС от Vista и выше, то рекомендуется не использовать этот скрипт, а пользовать вместо него GPP.

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

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

Логотип WordPress.com

Для комментария используется ваша учётная запись WordPress.com. Выход / Изменить )

Фотография Twitter

Для комментария используется ваша учётная запись Twitter. Выход / Изменить )

Фотография Facebook

Для комментария используется ваша учётная запись Facebook. Выход / Изменить )

Google+ photo

Для комментария используется ваша учётная запись Google+. Выход / Изменить )

Connecting to %s

 
%d такие блоггеры, как: