Работа с локальной сетью
При работе с локальной сетью наиболее часто решаются следующие задачи:
- организация общих сетевых ресурсов;
- подключение пользователей к ресурсам;
- организация резервного копирования с одного компьютера в сети на другой.
Для доступа к сетевым ресурсам используются сетевые пути в следующем формате:
\\Имя_компьютера\Имя_ресурса[\Имя_папки\...\Имя_файла]
Например, на сервере с сетевым именем Server1 имеется общедоступный принтер с сетевым именем Epson, то путь к нему указывается так: \\Server1\Epson.
Если на этом же компьютере имеется общедоступная папка Programs, то путь к ней выглядит как \\Server1\Programs, а путь к файлу в этой папке, например, так: \\Server1\Programs\Corel\Coreldrv.exe
Для работы с сетевой папкой, расположенной на сервере Global, необходимо задать путь:
\\Global\Имя_папки
Объект WshNetwork
Объект WshNetwork используется для работы с сетью, установки конфигурации сетевого среды - а именно для управления сетевыми дисками и принтерами.
Через объект WshNetwork можно получить информацию о локальном компьютере, подключаться к дискам и принтерам в сети, устанавливать принтер по умолчанию и отключаться от сетевых дисков и принтеров.
Для его использования объект нужно создать.
Set WshNetwork = CreateObject("WScript.Network")
Для получения информации о компьютере, можно получить его сетевые атрибуты: имя пользователя, имя компьютера и его домен.
Свойства объекта WshNetwork:
Свойство | Описание |
ComputerName | Имя компьютера |
UserDamain | Домен |
UserName | Имя пользователя |
Сетевые диски
Для работы с сетевыми дисками Windows Script Host предоставляет несколько методов, которые позволяют получать сведения о подключенных сетевых дисках, подключать сетевые диски и отключаться от них.
У объекта WshNetwork имеется методы EnumNetworkDrives и EnumNetworkPrinterConnections, с помощью которых можно создать коллекции, содержащие сведения обо всех подключенных к локальной сети сетевых дисках и сетевых принтерах. Эти коллекции устроены следующим образом: первым элементом коллекции является буква диска или название порта, вторым – сетевое имя ресурса, с которым связан этот диск или принтер. Та же последовательность сохраняется для всех элементов коллекции.
EnumNetworkDrives - возвращает список подключенных сетевых дисков.
Синтаксис:
objDrives = object.EnumNetworkDrive
где
object - объект WshNetwork
objDrives - переменная, которой присваивается ссылка на коллекцию сетевых дисков
Dim WshNetwork, Drives
Set WshNetwork = WScript.CreateObject("WScript.Network")
Set Drives = WshNetwork.EnumNetworkDrives
WScript.Echo "Подключены сетевые диски: "
For i = 0 to Drives.Count - 1 Step 2
WScript.Echo "Диски " & Drives.Item(i) & " = " & Drives.Item(i+1)
Next
MapNetworkDrive - назначает заданную букву сетевому диску.
Синтаксис:
WshNetwork.MapNetworkDrive strLocalName, strRemoteName, [bUpdateProfile], [strUser], [strPassword]
где
strLocalName - назначаемая буква сетевого диска
strRemoteName - удаленное имя
Необязательные параметры:
bUpdateProfile - логическая величина определяющая сохранять ли сделанную настройку в пользовательской конфигурации.
strUser, strPassword - вы можете указать имя и пароль для доступа к диску.
'создаем объект WshNetwork:
Set WshNetwork = CreateObject("WScript.Network")
'назначаем сетевой ресурс Server\PublicFiles как сетевой диск Z: WshNetwork.MapNetworkDrive "Z:", "\\Server\PublicFiles"
RemoveNetworkDrive - отключает сетевой диск
Синтаксис:
WshNetwork.RemoveNetworkDrive strName, [bForce], [bUpdateProfile]
где:
strName - имя диска
Необязательные параметры:
bForce - логический параметр. Если принимает значение true, то сетевой диск отключается, даже если он в настоящий момент используется данным компьютером.
bUpdateProfile - логический параметр, указывающий, сохранить ли сделанную настройку в пользовательском профиле.
VBScript:
'создаем объект WshNetwork:
Set WshNetwork = WScript.CreateObject("WScript.Network")
'подключаем сетевой диск Z:
WshNetwork.MapNetworkDrive "Z:", "\\Server\PublicFiles"
'отключаем сетевой диск Z:
WshNetwork.RemoveNetworkDrive "Z:"
При работе с сетевыми ресурсами могут возникать так называемые ошибки выполнения или исключения. Но это не те ошибки, когда вы забыли поставить закрывающую скобку, запятую или ошиблись в имени переменной. Это ошибки, возникающие в некоторых ситуациях во время выполнения сценария и зависящие от некоторых не регулярно возникающих обстоятельств. Например, для того, чтобы подключить сетевой диск к устройству Z:, нужно быть уверенным, что такая буква не использована ранее (иначе произойдет ошибка).
Режим обработки исключительных ситуаций в VBScript включается с помощью оператора On Error Resume Next. Если после этого при выполнении какого-либо оператора в сценарии произойдет ошибка, то выполнение передастся следующему оператору в тексте.
Для анализа ошибок используется объект Err. Это стандартный объект VBScript, содержащий информацию о так называемых run-time errors (ошибках времени выполнения). Свойство Source указывает на источник ошибки. Метод Clear очищает свойства объекта, удаляя сведения об ошибке. Помимо Source и Clear у объекта есть и другие свойства и методы, но реально может понадобиться, пожалуй, свойство Number и Description. Number возвращает код произошедшей ошибки, а Description ее описание.
Для отмены режима обработки исключений служит оператор On Error Goto 0.
Пример сценария с обработкой исключений:
' Создаем объект WshNetwork
Set WshNetwork = WScript.CreateObject("WScript.Network")
' Создаем объект WshShell
Set WshShell = WScript.CreateObject("WScript.Shell")
' Включаем обработку ошибок времени выполнения
On Error Resume Next
' Отключаем сетевой диск
WshNetwork.RemoveNetworkDrive "Z:"
If Err.Number<>0 Then
Info="Ошибка при отключении диска " & Drive & vbCrLf & _
"Код ошибки: " & err.number & vbCrLf &+ _
"Описание: " & err.description
WshShell.Popup Info,0,"Отключение сетевого диска",vbCritical
Else
' Все в порядке
Info="Диск " & Drive & " отключен успешно"
WshShell.Popup Info,0,"Отключение сетевого диска",vbInformation
End If
Работа с принтерами
Подобно работе с сетевыми дисками, WSH предоставляет для работы с сетевыми принтерами по сути те же методы.
EnumPrinterConnections – возвращает список подключенных принтеров
Синтаксис:
objPrinters = object.EnumPrinterConnections
где
object - объект WshNetwork
objPrinters - ссылка на коллекцию принтеров
AddPrinterConnection – подключает сетевой принтер.
WshNetworkt.AddPrinterConnection strLocalName, strRemoteName [,bUpdateProfile [,strUser][,strPassword]
где
strLocalName – назначаемое подключенному принтеру имя
strRemoteName - удаленное имя
Необязательные параметры:
bUpdateProfile - логическая величина (true или false),определяющая сохранять ли сделанную настройку в пользовательской конфигурации.
strUser, strPassword - вы можете указать имя и пароль для доступа к диску.
Set WshNetwork = CreateObject("WScript.Network")
WshNetwork.AddPrinterConnection "LPT1", “Server\\LaserJet1”
RemovePrinterConnection – отключат сетевой принтер.
Синтаксис:
WshNetwork.RemovePrinterConnection strName, [bForce], [bUpdateProfile]
где:
strName - имя диска
Необязательные параметры:
bForce - логический параметр. Если принимает значение true, то сетевой принтер отключается, независимо от того, используется он в настоящий момент или нет.
bUpdateProfile - логический параметр, указывающий, сохранить ли сделанную настройку в пользовательском профиле.
Set WshNetwork = CreateObject("WScript.Network")
WshNetwork.RemovePrinterConnection "LPT1:"
Кроме методов, подобных методам для работы с сетевыми дисками Windows Scripting Host для работы с принтерами предоставляет еще несколько.
AddWindowsPrinterConnections – устанавливает новый принтер в Windows.
Синтаксис:
WshNetwork.AddWindowsPrinterConnection(strPrinterPath)
где
strPrinterPath - путь к принтеру
Set WshNetwork = CreateObject("WScript.Network")
PrinterPath= "\\printserv\DefaultPrinter"
WshNework.AddWindowsPrinterConnection(PrinterPath)
SetDefaultPrinter – устанавливает принтер по умолчанию
Синтаксис:
object.SetDefaultPrinter strPrinterName
где
object - объкт WshNetwork
strPrinterName - удаленное имя принтера
Set WshNetwork = WScript.CreateObject("WScript.Network")
‘создаем объект WshNetwork
WshNetwork.AddPrinterConnection "LPT1:", “\\Server\\Prnt1”
‘подключаем к системе сетевой принтер
WshNetwork.SetDefaultPrinter "LPT1:"
‘задаем его принтером по умолчанию
Практическое задание
3.1. Создайте с помощью Блокнота файл, выводящий сообщение. Например, введите текст: WScript.Echo "Это первый сценарий"
3.2. Сохраните файл с любым из допустимых расширений (vbs).
3.3. Запустите сценарий на выполнение в диалоговом режиме и режиме командной строки.
3.4. Задайте настройки для сценария, для чего выполните следующие действия. Щелкните на нем правой кнопкой мыши и в окне свойств файла выберите вкладку “Сценарий”. Измените настройки на этой вкладке, поставив или сняв любой флажок, чтобы кнопка “Вернуть установки по умолчанию” стала доступна. После этого щелкните OK. Появился файл с расширением wsh.
3.5. В дальнейшем, если необходимо использовать измененные настройки, нужно вместо файла с расширением.vbs запускать файл с расширением.wsh.
3.6. Откроем файл с расширением.wsh с помощью Блокнота. Там будет примерно следующий текст:
[ScriptFile]
Path=C:\Мои документы\Пример1.VBS
[Options]
Timeout=10
DisplayLogo=1
Параметр Path в разделе [ScriptFile] содержит путь к файлу, для которого используется wsh-файл. Настройки в разделе [Options] – это сами настройки, ради которых, собственно и создан файл настройки.
Timeout – определяет время отведенное для выполнения сценария.
DisplayLogo – отвечает за вывод эмблемы Windows Script Host, при запуске в командном режиме. Если изменить его на 0, то эмблема отображаться не будет.
BatchMode – включает/выключает пакетный режим. Если ему присвоить значение 1, то сценарий будет выполнятся в пакетном режиме – без вывода информации на экран и сообщений об ошибках.
3.7. Самостоятельно выполните приведенные в разделе 2 примеры.
3.8. Выберите в таблице вариант заданий.
Создайте файлы сценариев, которые выполняю следующие операции:
- Выводит сведения о системе (см. таблицу).
№ варианта | Сведения о системе |
Операционная система, Директория Windows | |
Расширенные данные о процессоре, Поколение процессора | |
Заданные системные пути, директория Windows | |
Тип процессора, Операционная система | |
Количество процессоров на данном компьютере, Заданные системные пути | |
Диск на котором находится директория с операционной системой, Каталог по умолчанию для пользователей | |
Первый локальный диск, поколение процессора | |
Путь к файлу командной строки, папка для временных файлов | |
Тип процессора, заданные системные пути | |
Заданные системные пути, поколение процессора |
- Запускает приложение (на Ваш выбор) из пункта меню Стандартные с заданными параметрами (см. таблицу).
№ варианта | Стиль окна запускаемого приложения | Дожидаться окончания запущенного приложения |
Обычный размер в неактивном состоянии, но в фокусе остается запустившее приложение | Да | |
Развернутое на весь экран | Да | |
Запуск в скрытом виде | Нет | |
Запуск в свернутом виде | Нет | |
Запуск в скрытом виде | Да | |
Развернутое на весь экран | Да | |
Запуск в обычном размере (без фокуса) | Нет | |
Развернутое на весь экран | Да | |
Запуск в скрытом виде | Нет | |
Развернутое на весь экран | Да |
- Выводит сведения о путях ко всем специальным системным папкам, информацию о их количестве на данном компьютере. Использовать цикл для работы с семейством WshShell.SpecialFolders.
- Создает ярлык для какого-либо приложения, разместив его в заданной папке, с заданным стилем окна (см. таблицу). Установить горячие клавиши, иконку, всплывающую подсказку. В качестве рабочего каталога задать каталог \Temp, для определения точного пути к нему использовать переменную среды %Temp%.
№ варианта | Папка для размещения ярлыка | Стиль окна |
Рабочий стол | На весь экран | |
Избранное | Свернутое | |
Мои документы | На весь экран | |
Избранное | Обычное | |
Рабочий стол | Свернутое | |
Мои документы | Обычное | |
Избранное | Свернутое | |
Рабочий стол | На весь экран | |
Мои документы | На весь экран | |
Избранное | Свернутое |
- Создает ярлык для Web-узла, разместив его произвольной папке.
- Выводит информацию о локальном компьютере, на котором работает студент (имя пользователя и имя компьютера.).
- Выводит наименования подключенных сетевых дисков и их количество.
- Выводит сведения о сетевых принтерах и их количество. Если сетевых принтеров несколько, запросить у пользователя, какой из них следует сделать используемым по умолчанию.
- Выполняет попытку подключения сетевого диска с заданным пользователем именем и параметрами. Если подключение прошло успешно, перед завершением работы сценария предложить отключить сетевой диск. Организовать обработку исключительных ситуаций (невозможность подключения и отключения диска).