Свързване и изключване на мрежови устройства и принтери

Книга: Windows Script Host за Windows 2000/XP
Свързване и изключване на мрежови устройства и принтери
Секции на тази страница:
Свързване и изключване на мрежови устройства и принтери
Споделените ресурси, налични в локалната мрежа (дискове и принтери), могат да бъдат скриптирани за свързване към работна станция за споделяне. В този случай на свързаното мрежово устройство трябва да бъде присвоена незаета локална буква на устройство (например, ако системата вече има C:, D: и E: устройства (локални или мрежови), тогава мрежовото устройство може да бъде свързано под буквата F: или K:, но не и E:). Ако е свързан мрежов принтер, можете или да се свържете директно с този принтер (за печат от Windows приложения), или да назначите локален порт към отдалечен принтер (за печат от по-стари MS-DOS приложения).
Мрежовите устройства и принтерите могат също да бъдат картографирани с помощта на Windows Explorer или чрез изпълнение на съответната команда NET USE.
Като пример, разгледайте скрипта MapResources.js JScript (списък 2.50), който свързва K: устройството към мрежовия ресурс RS_NT_Serverd и установява връзка между локалния LPT1 порт и мрежовия принтер 104_StepankovaHP.
Първо трябва да инстанциирате обектите WshNetwork и WshShell:
WshNetwork = WScript.CreateObject("WScript.Network"); WshShell = WScript.CreateObject("WScript.Shell");
За да свържете мрежово устройство към K: устройството, трябва да сте сигурни, че мрежово устройство вече не е свързано с тази буква (в противен случай ще възникне грешка). Следователно мрежовото устройство първо се деактивира с помощта на метода RemoveNetworkDrive:
(На променливата Drive преди това беше присвоена стойността "K:"). Може да възникне грешка по време на изпълнение, когато изпълните тази команда(например устройство K: не съществува или е възникнала грешка при прекъсване на връзката с мрежовия ресурс, свързан с него), така че извикването на метода RemoveNetworkDrive се поставя в блок try на конструкцията try...catch на JScript, което ви позволява да обработвате такива грешки:
опитайте //Премахване на мрежово устройство WshNetwork.RemoveNetworkDrive(Drive); > улов (e) < //Обработване на възможни грешки if (е.number != 0) //Показване на съобщение за грешка IsError=true; Mess="Грешка при прекъсване на връзката с устройство "+Drive + "nКод на грешка: "+ e.number+"nDescription: " + e.description; WshShell.Popup(Бъркотия, 0, "Изскачащо мрежово устройство", vbCritical); > >
Сега, ако възникне грешка по време на работата на метода RemoveNetworkDrive, управлението ще бъде прехвърлено вътре в блока catch и полетата на обектната променлива e ще съдържат информация за възникналата грешка ( e.number е числовият код на грешката, e.description е кратко описание на грешката); тази информация се показва в диалогов прозорец (фиг. 2.23).
Фиг. 2.23. Информация за грешката, възникнала при деактивирането на диск K:
Ако прекъсването на диск K: е било успешно, на екрана се показва диалогов прозорец с информация за това (фиг. 2.24):
if (!IsError) < //Всичко е наред Mess="Drive "+Drive+" disconnected successfully"; WshShell.Popup(Бъркотия, 0, "Изскачащо мрежово устройство", vbInformation); >
Фиг. 2.24. Информация за успешното прекъсване на връзката на диск K:
Подобен блок try…catch също се използва при свързване на мрежово устройство:
опитайте //Монтиране на мрежово устройство WshNetwork.MapNetworkDrive(Drive, NetPath); > catch (e) //Обработване на възможни грешки if (e != 0) //Показване на съобщение за грешка IsError=true; Mess="Грешка при свързване на устройство " + Drive + " към " + NetPath+ "n Код на грешка:"+e.number + "nDescription: "+e.description; WshShell.Popup(Mess, 0, "Map network drive", vbCritical);
Ако, например, потребителят, който свързва мрежовото устройство, няма подходящите права за достъп до мрежовия ресурс, тогава диалоговият прозорец, показан на фиг. 2.25.
Фиг. 2.25. Информация за грешката, възникнала при свързване на диск K:
Освобождаването на локален порт (метод RemovePrinterConnection), свързването на мрежов принтер към този порт (метод AddPrinterConnection) и обработката на грешки по време на изпълнение, които могат да възникнат по време на тези действия, се извършват в скрипта по подобен начин.
Списък 2.50. Прекъсване и свързване на мрежови ресурси (JScript)
/********************************************************************/ /* Име: MapResources.js */ /* Език: JScript */ /* Описание: Прекъсване на връзката и картографиране на мрежови устройства и принтери */ /********************************************************************************/ //Деклариране на променливи var WshNetwork,WshShell,Drive,Net Path,Port,NetPrinter,Mess,Is грешка; //Инициализиране на константи за диалогови прозорци var vbCritical=16,vbInformation=64; Задвижване="K:"; //Буква на устройство //NetPath="\RS_NT_Serverd"; //Мрежов път за връзка с устройство NetPath="\RS_NT_Serverd"; //Мрежов път за свързване на устройство Port="LPT1"; //Име на локален порт //Мрежов път за връзка с принтер NetPrinter="\104_StepankovaHP"; //Създаване на WshNetwork обект WshNetwork = WScript.CreateObject("WScript.Network"); //Създаване на WshShell обект WshShell = WScript.CreateObject("WScript.Shell"); /**************** Деактивиране на мрежово устройство ***********************/ IsError=false; опитайте //Деактивирайте мрежовото устройство WshNetwork.RemoveNetworkDrive(Drive); > улов (e) < //Обработване на възможни грешки if (e != 0) //Показване на съобщение за грешка IsError=true; Mess="Грешка при прекъсване на връзката с устройство "+Drive+"nКод на грешка: "+ e.number+"nDescription: "+e.description; WshShell.Popup(Mess,0,"Изскачащо мрежово устройство",vbCritical); > > ако (!IsError) < //Всичко е наред Mess="Drive "+Drive+" disconnected successfully"; WshShell.Popup(Mess,0,"Изскачащо мрежово устройство",vbInformation); > /**************** Картографиране на мрежово устройство ***********************/ IsError=false; опитайте //Монтиране на мрежово устройство WshNetwork.MapNetworkDrive(Drive,NetPath); > улов (e) < //Обработване на възможни грешки if (e != 0) //Показване на съобщение за грешка IsError=true; Mess="Грешка при свързване на устройство " + Drive + " към " + NetPath+ "nКод на грешка: "+e.number+"nDescription: "+e.description; WshShell.Popup(Mess,0,"Map network drive",vbCritical); > > if (!IsError) //Всичко е наред Mess="Disk "+Drive+" беше успешно свързан с "+NetPath; WshShell.Popup(Mess,0,"Map Network Drive",vbInformation); > /**************** Освобождаване на локалния порт ***********************/ IsError=false; опитайте //Прекъснете връзката с мрежовия принтер WshNetwork.RemovePrinterConnection(Port); > catch (e) if (e != 0) < //Обработка на възможни грешки //Показване на съобщение за грешка IsError=true; Mess="Грешка при деактивиране на порт "+Port+"nКод на грешка: "+ e.number+"nDescription: "+e.description; WshShell.Popup(Mess,0,"Изскачащ локален порт от мрежов дял",vbCritical); > > if (!IsError) //Всичко е наред Mess="Port "+Port+" disconnected successfully"; WshShell.Popup(Mess,0,"Изскачащ локален порт отмрежов ресурс", vbInformation); > /***** Свързване на локален порт към мрежов принтер *********/ IsError=false; опитайте //Свързване на мрежов принтер към локален порт WshNetwork.AddPrinterConnection(Port,NetPrinter); > catch (e) < //Обработване на възможни грешки if (e != 0) //Показва съобщение за грешка IsError=true; Mess="Грешка при преназначаване на порт "+Port+ " към "+NetPrinter+ "nКод на грешка: "+e.number+"nDescription: "+e.description; WshShell.Popup(Mess,0,"Свързване на локален порт към мрежов ресурс",vbCritical); > > if (! IsError) //Всичко е наред Mess="Port "+Port+" беше успешно свързан с "+NetPrinter; WshShell.Popup(Mess,0,"Свързване на локален порт към мрежов ресурс",vbInformation); > /**************** Край ********************************************* ****/
Реализацията на VBScript на същия скрипт е показана в списък 2-51. Основната разлика тук е начинът, по който се обработват възможни грешки по време на изпълнение. Във VBScript за тази цел е предназначен операторът On Error Resume Next - ако възникне грешка след изпълнение на този оператор, скриптът няма да бъде прекъснат, а просто ще премине към изпълнението на следващия ред код. Можете да анализирате възникналата грешка с помощта на специалния обект Err, чиито полета Number и Description съответно ще съдържат кода и описанието на грешката.