Рассмотрим небольшой пример, в котором выведем в информационное окно сведения об имени пользователя, имени компьютера и домене:
//Пример работы с WshNetwork в JScript //Создаем объект WshNetwork var
WshNetwork = new ActiveXObject("WScript.Network"); //Создаем переменную
info и заносим туда имя пользователя info = "Имя пользователя: " +
WshNetwork.UserName; //Добавляем переход на следующую строку info =
info + "n"; //Добавляем имя компьютера info = info + "Имя компьютера: "
+ WshNetwork.ComputerName; info = info + "n"; //Добавляем домен, к
которому подключился пользователь info = info + "Домен: " +
WshNetwork.UserDomain; //Выводим на экран полученную информацию
WScript.Echo (info); `Тот же пример на VBScript Set WshNetwork =
CreateObject("WScript.Network") info = "Имя пользователя: " &
WshNetwork.UserName `Обратите внимание, как осуществляется переход на
новую строку info = info & Chr(10) info = info & "Имя
компьютера: " & WshNetwork.ComputerName info = info & Chr(10)
info = info & "Домен: " & WshNetwork.UserDomain WScript.Echo
info В этих примерах мы использовали свойства объекта WshNetwork: UserName, ComputerName и UserDomain
для получения информации о залогинившемся пользователе. Зачем это может
понадобиться? Например, если на компьютере работает несколько
пользователей и им нужен доступ к разным сетевым дискам, можно
обеспечить автоматическое мапирование этих дисков в зависимости от
того, какой пользователь сейчас работает. Таким
образом мы незаметно подошли к вопросу работы с сетевыми дисками. Для
начала, неплохо бы выяснить, какие сетевые диски подключены в данный
момент: //JScript var vbOKOnly = 0; var vbInformation = 64; var
WSHShell = WScript.CreateObject("WScript.Shell"); var WSHNetwork =
WScript.CreateObject("WScript.Network") var colDrives =
WSHNetwork.EnumNetworkDrives(); if (colDrives.length == 0) {
WSHShell.Popup("Подключенных сетевых дисков нет", 0, "Работа с
WSHNetwork", vbInformation + vbOKOnly ); } else { strMsg = "Текущие
сетевые подключения: n"; for (i = 0; i < colDrives.length; i += 2) {
strMsg = strMsg + "n" + colDrives(i) + "t" + colDrives(i + 1); }
WSHShell.Popup(strMsg, 0, "Работа с WSHNetwork", vbInformation +
vbOKOnly ); } `VBScript Set WSHNetwork =
WScript.CreateObject("WScript.Network") Set colDrives =
WSHNetwork.EnumNetworkDrives If colDrives.Count = 0 Then MsgBox
"Подключенных сетевых дисков нет", _ vbInformation + vbOkOnly, _
"Работа с WSHNetwork" Else strMsg = "Текущие сетевые подключения: "
& Chr(10) For i = 0 To colDrives.Count - 1 Step 2 strMsg = strMsg
& Chr(10) & colDrives(i) & Chr(9) & colDrives(i + 1)
Next MsgBox strMsg, _ vbInformation + vbOkOnly, _ "Работа с WSHNetwork"
End If Думаю, подробно код объяснять не стоит, все довольно прозрачно:
создаем нужные переменные, проверяем есть ли вообще подключенные диски,
если нет - выводим соответствующее сообщение, если есть - выводим их
список. Для подключения и отключения сетевых дисков существуют методы MapNetworkDrive и RemoveNetworkDrive соответственно. Пример работы с ними (на JScript): WshNetwork.MapNetworkDrive("X:", "\\S2\Vol1", "true", "User1", "123"); Здесь
обязательными являются только первые два параметра: буква, на которую
будет подключаться диск и, собственно, путь к сетевому диску. Третий
(true или false) параметр указывает, осуществлять или нет подключение
этого диска при следующем логоне. Четвертый и пятый параметры - это имя
пользователя и пароль, с которыми может подключаться этот диск.
Конечно, хранить пароль на подключение диска в открытом виде в скрипте
не очень мудро. Лучше организовать доступ к диску нужным пользователям
на сервере, средствами самой ОС. Тогда посторонние люди не смогут узнать пароль для работы с этим ресурсом. WshNetwork.RemoveNetworkDrive("X:", "true", "true"); Здесь
обязателен только первый параметр - буква отключаемого диска. Второй
параметр - если true, отключает диск даже если он в этот момент
используется. Третий параметр сохраняет настройки для следующих логонов. С
дисками разобрались, перейдем к сетевым принтерам. Работа с ними мало
отличается от работы с дисками, поэтому похожие моменты опишу коротко,
а остановлюсь подробнее именно на отличиях. EnumPrinterCollections - возвращает список подключенных принтеров (аналогично дискам). AddPrinterConnection
- подключает локальный порт компьютера к сетевому принтеру. Параметры у
этого метода аналогичны методу MapNetworkDrive, только первым
параметром идет не буква диска, а порт принтера (LPT1, например). RemovePrinterConnection - отключает сетевой принтер (вместо буквы диска - порт принтера). SetDefaultPrinter
- устанавливает заданный сетевой принтер принтером по умолчанию. В
качестве параметра методу передается сетевое имя принтера, который
будет использован по умолчанию (SetDefaultPrinter("\\Comp1\HP1100");). AddWindowsPrinterConnections
- регистрирует принтер в Windows и подключает его к сетевому ресурсу.
Этот метод позволяет создать связь с сетевым принтером без явного
перенаправления вывода в локальный порт. Набор параметров этого метода
для Windows 9x и Windows NT/2000/XP отличается. Для Windows 9x: AddWindowsPrinterConnections(strPrnPath, strDriverName [,strPort]); strPrnPath - путь к сетевому принтеру; strDriverName - имя драйвера, необходимого для подключения принтера; strPort - порт, куда будет перенаправлен вывод. Для Windows NT/2000/XP последние два параметра игнорируются. Вот,
собственно, и вся информация по работе с сетевым окружением с помощью
WSH. Областей, где это можно применить - масса, приведу только один
пример, который сейчас активно используется у нас на работе: при каждой
регистрации пользователя на компьютере отрабатывает logon-скрипт,
который пишет в лог-файл (имеющий имя компьютера, на котором произошла
регистрация) имя пользователя и время логона. Таким образом убиваются
два зайца: можно выяснить на каком компьютере установлена неверная дата
и кто заходит в сеть с чужого компьютера. Пример довольно легкий, так
что я не буду приводить здесь его код, пусть это будет вашим домашним
заданием :). Другие способы использования материалов этой статьи,
надеюсь, придумаете сами.
Источник: http://webhowto.ru |