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

Очень простой скрипт, который удобно использовать, как логон-скрипт, в групповых политиках. Он подключает «расшаренный» сетевой принтер и назначает его принтером по умолчанию. Если этот скрипт разместить в папке 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

9 Comments

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

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

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

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

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

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

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

Leave a Reply

Your email address will not be published. Required fields are marked *

Notify me of followup comments via e-mail. You can also subscribe without commenting.