Книга: Windows Script Host для Windows 2000/XP
Подключение и отключение сетевых дисков и принтеров
Разделы на этой странице:
Подключение и отключение сетевых дисков и принтеров
Имеющиеся в локальной сети общедоступные ресурсы (диски и принтеры) можно посредством сценария подключить к рабочей станции для совместного использования. Подключаемому сетевому диску при этом нужно поставить в соответствие незанятую букву локального диска (например, если в системе уже имеются диски С:, D: и Е: (локальные или сетевые), то сетевой диск можно подключить под буквой F: или K:, но не Е:). В случае подключения сетевого принтера можно либо напрямую соединиться с этим принтером (для печати из приложений Windows), либо поставить в соответствие удаленному принтеру локальный порт (для печати из старых приложений MS-DOS).
Замечание
Сетевые диски и принтеры также можно подключить с помощью Проводника Windows или выполнив соответствующую команду NET USE
.
В качестве примера рассмотрим JScript-сценарий MapResources.js (листинг 2.50), в котором производится подключение диска K: к сетевому ресурсу RS_NT_Serverd и установка связи локального порта LPT1 с сетевым принтером 104_StepankovaHP.
Сначала нужно создать экземпляры объектов WshNetwork и WshShell:
WshNetwork = WScript.CreateObject("WScript.Network");
WshShell = WScript.CreateObject("WScript.Shell");
Для того чтобы подключить сетевой диск к устройству K:, нужно быть уверенным, что с этой буквой уже не связан сетевой диск (иначе произойдет ошибка). Поэтому предварительно отключается сетевой диск с помощью метода RemoveNetworkDrive:
WshNetwork.RemoveNetworkDrive(Drive);
(переменной Drive заранее было присвоено значение "K:"). При выполнении этой команды может произойти ошибка времени выполнения (например, диск K: не существует или возникла ошибка при отключении связанного с ним сетевого ресурса), поэтому вызов метода RemoveNetworkDrive
помещается внутрь блока try конструкции try…catch
языка JScript, которая позволяет обрабатывать такие ошибки:
try {
//Отключаем сетевой диск
WshNetwork.RemoveNetworkDrive(Drive);
} catch (e) { //Обрабатываем возможные ошибки
if (е.number != 0) {
//Выводим сообщение об ошибке
IsError=true;
Mess="Ошибка при отключении диска "+Drive + "nКод ошибки: "+
е.number+"nОписание: " + е.description;
WshShell.Popup(Mess, 0, "Отключение сетевого диска", vbCritical);
}
}
Теперь в случае возникновения ошибки при работе метода RemoveNetworkDrive
управление передастся внутрь блока catch
, а в полях переменной-объекта е будет содержаться информация о произошедшей ошибке (е.number
— числовой код ошибки, е.description
— краткое описание ошибки); эта информация отображается в диалоговом окне (рис. 2.23).
Рис. 2.23. Информация об ошибке, произошедшей при отключении диска K:
Если же отключение диска K: прошло успешно, на экран выводится диалоговое окно с информацией об этом (рис. 2.24):
if (!IsError) { //Все в порядке
Mess="Диск "+Drive+" отключен успешно";
WshShell.Popup(Mess, 0, "Отключение сетевого диска", vbInformation);
}
Рис. 2.24. Информация об успешном отключении диска K:
Аналогичный блок try…catch
используется и при подключении сетевого диска:
try {
//Подключаем сетевой диск
WshNetwork.MapNetworkDrive(Drive, NetPath);
} catch (e) {
//Обрабатываем возможные ошибки
if (e != 0) {
//Выводим сообщение об ошибке
IsError=true;
Mess="Ошибка при подключении диска " + Drive + " к " + NetPath+
"nКод ошибки: "+е.number + "nОписание: "+е.description;
WshShell.Popup(Mess, 0, "Подключение сетевого диска", vbCritical);
Если, например, пользователь, который подключает сетевой диск, не имеет соответствующих прав доступа к сетевому ресурсу, то на экран выведется диалоговое окно, изображенное на рис. 2.25.
Рис. 2.25. Информация об ошибке, произошедшей при подключении диска K:
Освобождение локального порта (метод RemovePrinterConnection
), подключение сетевого принтера к этому порту (метод AddPrinterConnection
) и обработка ошибок времени выполнения, которые могут возникнуть при этих действиях, производится в сценарии аналогичным образом.
Листинг 2.50. Отключение и подключение сетевых ресурсов (JScript)
/********************************************************************/
/* Имя: MapResources.js */
/* Язык: JScript */
/* Описание: Отключение и подключение сетевых дисков и принтеров */
/********************************************************************/
//Объявляем переменные
var WshNetwork,WshShell,Drive,NetPath,Port,NetPrinter,Mess,IsError;
//Инициализируем константы для диалоговых окон
var vbCritical=16,vbInformation=64;
Drive="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;
try {
//Отключаем сетевой диск
WshNetwork.RemoveNetworkDrive(Drive);
} catch (e) { //Обрабатываем возможные ошибки
if (e != 0) {
//Выводим сообщение об ошибке
IsError=true;
Mess="Ошибка при отключении диска "+Drive+"nКод ошибки: "+
e.number+"nОписание: "+e.description;
WshShell.Popup(Mess,0,"Отключение сетевого диска",vbCritical);
}
}
if (!IsError) {
//Все в порядке
Mess="Диск "+Drive+" отключен успешно";
WshShell.Popup(Mess,0,"Отключение сетевого диска",vbInformation);
}
/************* Подключение сетевого диска ***********************/
IsError=false;
try {
//Подключаем сетевой диск
WshNetwork.MapNetworkDrive(Drive,NetPath);
} catch (e) { //Обрабатываем возможные ошибки
if (e != 0) {
//Выводим сообщение об ошибке
IsError=true;
Mess="Ошибка при подключении диска " + Drive + " к " + NetPath+
"nКод ошибки: "+e.number+"nОписание: "+e.description;
WshShell.Popup(Mess,0,"Подключение сетевого диска",vbCritical);
}
}
if (!IsError) {
//Все в порядке
Mess="Диск "+Drive+" успешно подключен к "+NetPath;
WshShell.Popup(Mess,0,"Подключение сетевого диска",vbInformation);
}
/************* Освобождение локального порта ***********************/
IsError=false;
try {
//Разрываем связь с сетевым принтером
WshNetwork.RemovePrinterConnection(Port);
} catch (e) {
if (e != 0) { //Обрабатываем возможные ошибки
//Выводим сообщение об ошибке
IsError=true;
Mess="Ошибка при отключении порта "+Port+"nКод ошибки: "+
e.number+"nОписание: "+e.description;
WshShell.Popup(Mess,0,"Отключение локального порта от сетевого ресурса",vbCritical);
}
}
if (!IsError) {
//Все в порядке
Mess="Порт "+Port+" отключен успешно";
WshShell.Popup(Mess,0,"Отключение локального порта от сетевого ресурса",vbInformation);
}
/***** Подключение локального порта к сетевому принтеру *********/
IsError=false;
try {
//Подключаем сетевой принтер к локальному порту
WshNetwork.AddPrinterConnection(Port,NetPrinter);
} catch (e) { //Обрабатываем возможные ошибки
if (e != 0) {
//Выводим сообщение об ошибке
IsError=true;
Mess="Ошибка при переназначении порта "+Port+ " на "+NetPrinter+
"nКод ошибки: "+e.number+"nОписание: "+e.description;
WshShell.Popup(Mess,0,"Подключение локального порта к сетевому ресурсу",vbCritical);
}
}
if (!IsError) {
//Все в порядке
Mess="Порт "+Port+" успешно подключен к "+NetPrinter;
WshShell.Popup(Mess,0,"Подключение локального порта к сетевому ресурсу",vbInformation);
}
/************* Конец *********************************************/
Реализация того же сценария на языке VBScript представлена в листинге 2.51. Главное отличие здесь состоит в способе обработки возможных ошибок времени выполнения. В VBScript для этой цели предназначен оператор On Error Resume Next
— при возникновении ошибки после выполнения этого оператора сценарий не прервется, а просто перейдет к выполнению следующей строки кода. Проанализировать же возникшую ошибку можно с помощью специального объекта Err
, в полях Number
и Description
которого будут соответственно содержаться код и описание ошибки.
Листинг 2.51. Отключение и подключение сетевых ресурсов (VBScript)
'********************************************************************
' Имя: MapResources.vbs
' Язык: VBScript
' Описание: Отключение и подключение сетевых дисков и принтеров
'********************************************************************
Option Explicit
' Объявляем переменные
Dim WshNetwork,Drive,NetPath,Port,NetPrinter
Drive="K:" ' Буква диска
NetPath="RS_NT_Serverd" ' Сетевой путь для подключения диска
Port="LPT1" ' Название локального порта
' Сетевой путь для подключения принтера
NetPrinter="104_StepankovaHP"
' Создаем объект WshNetwork
Set WshNetwork = WScript.CreateObject("WScript.Network")
' Создаем объект WshShell
Set WshShell = WScript.CreateObject("WScript.Shell")
On Error Resume Next ' Включаем обработку ошибок времени выполнения
'************* Отключение сетевого диска ***********************
' Отключаем сетевой диск
WshNetwork.RemoveNetworkDrive Drive
If Err.Number<>0 Then
Mess="Ошибка при отключении диска " & Drive & vbCrLf & _
"Код ошибки: " & e.number & vbCrLf &+ _
"Описание: " & e.description
WshShell.Popup Mess,0,"Отключение сетевого диска",vbCritical
Else
' Все в порядке
Mess="Диск " & Drive & " отключен успешно"
WshShell.Popup Mess,0,"Отключение сетевого диска",vbInformation
End If
'************* Подключение сетевого диска ***********************
' Подключаем сетевой диск
WshNetwork.MapNetworkDrive Drive,NetPath
If Err.Number<>0 Then
Mess="Ошибка при подключении диска " & Drive & " к " & NetPath &_
"Код ошибки: " & e.number & "Описание: " & e.description
WshShell.Popup Mess,0,"Подключение сетевого диска",vbCritical
Else
' Все в порядке
Mess="Диск " & Drive & " успешно подключен к " & NetPath
WshShell.Popup Mess,0,"Подключение сетевого диска",vbInformation
End If
'************* Освобождение локального порта ***********************
' Разрываем связь с сетевым принтером
WshNetwork.RemovePrinterConnection Port
If Err.Number<>0 Then
Mess="Ошибка при отключении порта " & Port & "Код ошибки: " &_
e.number & "Описание: " & e.description
WshShell.Popup Mess,0,"Отключение порта от сетевого ресурса",vbCritical
Else
' Все в порядке
Mess="Порт " & Port & " отключен успешно"
WshShell.Popup Mess,0,"Отключение порта от сетевого ресурса",_
vbInformation
End If
'***** Подключение локального порта к сетевому принтеру *********
' Подключаем сетевой принтер к локальному порту
WshNetwork.AddPrinterConnection Port,NetPrinter
If Err.Number<>0 Then
Mess="Ошибка при переназначении порта " & Port & " на " & NetPrinter &_
"Код ошибки: " & e.number & "Описание: " & e.description
WshShell.Popup Mess,0,"Подключение порта к сетевому ресурсу",vbCritical
Else
' Все в порядке
Mess="Порт " & Port & " успешно подключен к " & NetPrinter
WshShell.Popup Mess,0,"Подключение порта к сетевому ресурсу",
vbInformation
End If
'************* Конец *********************************************
- Отключение
- Отключение питания
- Включение и отключение синхронного вывода
- Размещение публикаций в сетевых СМИ
- Конфигурирование жестких дисков
- Глава 4. Установка и конфигурирование сетевых интерфесов
- Часть II Автоматическое и ручное восстановление данных с жестких дисков
- Задняя панель компьютера. Подключение нового компьютера
- Часть II Компьютерные сети и подключение к Интернету
- Глава 2 Восстановление данных с жестких дисков
- Неисправности электрической сети и сетевых устройств
- Неисправности дисковода