Отправляет email-рассылки с помощью сервиса Sendsay
  Все выпуски  

Использование VbScript для администратора Windows


Выпуск #09

"Vbs, whs, js скрипты для администратора"

16 сентября 2008

Дорогой подписчик сегодня приступаем к объектам по работе с сетью и оболокой Windows. Для работы с локальной сетью и оболочкой Windows (специальные папка, переменные среды, системный реестр) предназначены объекты WshNetwork и WshShell.

Объект WshNetwork

Объект WshNetwork предназначен для работы с ресурсами локальной сети; с помощью методов этого объекта можно подключать и отключать сетевые диски и принтеры.

Свойства этого объекта приведены в табл. 1.

Таблица 1.

Свойства объекта WshNetwork

Свойство
Описание
ComputerName Имя компьютера, на котором запущен сценарий
UserDomain Имя домена, в котором зарегестрирован пользователь
UserName Имя пользователя

В листинге 1 выводятся свойства объекта WshNetwork

'Листинг 1
'******************************************************* Начало
'* Имя: ShowNetwork.vbs
'* Язык: VBScript
'* Описание: Вывод свойств объекта WshNetwork
'*******************************************************

Dim objNet

'Создаем объект WshNetwork
Set objNet = WScript.CreateObject("WScript.Network")
WScript.Echo "Компьютер:" & objNet.ComputerName
WScript.Echo "Домен:" & objNet.UserDomain
WScript.Echo "Пользователь:" & objNet.UserName
'******************************************************* Конец       
       

Методы объекта WshNetwork описаны в таблице 2.

Таблица 2.

Методы объекта WshNetwork

Метод
Описание

AddPrinterConnection
(strLocalName, strRemoteName
[,bUpdateProfile][,strUser]
[,strPassword])

Имя компьютера, на котором запущен сценарий

Windows NT/2000/XP/Vista:
AddWindowsPrinterConnection(strPrnPath)

Windows 9x:
AddWindowsPrinterConnection(strPrnPath,
strDriverName[,strPort])

Регистрирует принтер в Windows и подключает его к сетевому ресурсу. В отличие от AddPrinterConnection, этот метод позволяет создавать связь с сетевым принтером без явного перенаправления вывода в локальный порт.
EnumNetworkDrivers() Возвращает коллекцию, в которой хранятся буквы и сетевые пути ко всем подключенным сетевым дискам
EnumPrinterConnections() Возвращает коллекцию, в которой хранятся данные обо всех подключенных принтерах
MapNetworkDrive (strLocalName, strRemoteName[, bUpdateProfile] [, strUser] [,strPassword) Подключает сетевой ресурс strRemoteName под локальным именем диска strLocalName
RemoteNetworkDrive (strName [, bForce] [,bUpdateProfile]) Отключает подключенный сетевой диск
RemotePrinterConnection (strName [, bForce] [,bUpdateProfile]) Отключает подключенный сетевой принтер
SetDefaultPrinter (strPrinterName) Делает заданный принтер принтером по умолчанию.

Рассмотрим эти методы более подробно.

 

AddPrinterConnection

Опишем параметры данного метода:

Обязательные:
strLocalName - имя локального порта;
strRemoteName - сетевое имя принтера;

Необязательные:
bUpdateProfile - сохранение в профиле пользователя создаваемое сетевое подключение принтера;
strUser и strPassword - имя пользователя и пароль нужны в том случае, когда вы подключаете сетевой принтер от имени пользователя, которое отличается от имени текущего пользователя, зарегистрированного в системе.

В листинге 2 метод AddPrinterConnection применяется для подключения принтера с сетевым именем \\Server1\Epson к локальному порту LPT1.

'Листинг 2
'******************************************************* Начало
'* Имя: AddPrinterConnection.vbs
'* Язык: VBScript
'* Описание: Подсоединение принтера
'*******************************************************

Dim objNet

'Создаем объект WshNetwork
Set objNet = WScript.CreateObject("WScript.Network")
'Добавляем к локальному порту LPT1 сетевой принтер \\Server1\Epson
objNet.AddPrinterConnection "LPT1","\\Server1\Epson"
'******************************************************* Конец       
       

Внимание !!!Приведенный в листинге 2 пример является гипотетическим, т.к. предполагает подсоединение к серверу с именем Server1, которого может и не быть, и принтера с именем Epson, которого тоже может не быть. В результате этого возникнет ошибка, что невозможно найти сервер. Если вы точно знаете значения сетевого сервера и принтера, то подставьте их. Приведенные ниже примеры по подсоединению принтеров тоже подсоединяются к гипотетическим серверам и с гипотетическими принтерами. Данные примеры даны для информации, чтобы иметь представление как подсоединить принтер.

AddWindowsPrinterConnection

Данный метод присоединяет принтер и имеет следующие обязательные параметры:

для семейства NT/2000/XP/Vista:

strPrnPath - сетевой путь к соединению принтера.

для семейства Windows 9x:

strPrnPath - сетевой путь к соединению принтера;
strDriverName - имя драйвера принтера;

необязательные для семейства Windows 9x:

strPort - порт принтера.

В листинге 3 рассмотрен пример для семейства Windows 9x, а в листинге 4 для NT/2000/XP/Vista.

'Листинг 3
'******************************************************* Начало
'* Имя: AddWindowsPrinterConnection9x.vbs
'* Язык: VBScript
'* Описание: Подсоединение принтера
'*******************************************************

Dim objNet, strPath, strDriver, strPort

'Создаем объект WshNetwork
Set objNet = WScript.CreateObject("WScript.Network")
'Сетевой путь
strPath = "\\printserv\DefaultPrinter"
'Драйвер
strDriver ="Lexmark Optra S 1650"
'Порт
strPort = "LPT1"
'Добавляем принтер в систему
objNet.AddWindowsPrinterConnection strPath,strDriver, strPort
'******************************************************* Конец   

 

'Листинг 4
'******************************************************* Начало
'* Имя: AddPrinterConnectionNo9x.vbs
'* Язык: VBScript
'* Описание: Подсоединение принтера
'*******************************************************

Dim objNet, strPath

'Создаем объект WshNetwork
Set objNet = WScript.CreateObject("WScript.Network")
'Сетевой путь к принтеру
strPath = "\\printserv\DefaultPrinter"
'Добавляем подключение принтера 
objNet.AddWindowsPrinterConnection strPath
'******************************************************* Конец 

EnumNetworkDrivers

Данный метод возвращает коллекцию элементами которого являются буквы обозначающие имеющие сетевые диски и сетевые имена ресурсов, к которым эти диски подключены. Первым элементом коллекции является буква, вторым сетевое имя; эта последовательность сохраняется для всех сетевых дисков в коллекции.

В листинге 5 выводится на экран буквы, обозначающие сетевые диски и имена ресурсов, к которым они подключены.

'Листинг 5
'******************************************************* Начало
'* Имя: EnumNetworkDrivers.vbs
'* Язык: VBScript
'* Описание: Вывод на экран букв и путей к сетевым дискам
'*******************************************************

Dim objNet, objDrivers, lngI

'Создаем объект WshNetwork
Set objNet = WScript.CreateObject("WScript.Network")

'Создаем коллекцию с информацией о сетевых дисках
Set objDrivers = objNet.EnumNetworkDrives

For lngI=0 To objDrivers.Count-1
        WScript.Echo objDrivers.Item(lngI) 'Вывод  lngI - го элемента коллекции
Next 
'******************************************************* Конец 

EnumPrinterConnections

Элементами возвращаемой коллекции являются названия локальных портов и сетевые имена принтеров, связанных с этими портами. Сама коллекция организована так же, как и коллекция, возвращаемая методом EnumNetworkDrivers. В листинге 6 выводится на экран названия всех принтеров.

'Листинг 6
'******************************************************* Начало
'* Имя: EnumPrinterConnection.vbs
'* Язык: VBScript
'* Описание: Вывод на экран портов и сетевых путей к принтерам
'*******************************************************

Dim objNet, objPrinters, lngI
'Создаем объект WshNetwork
Set objNet = WScript.CreateObject("WScript.Network")

'Создаем коллекцию с информацией о подключенных принтерах
Set objPrinters = objNet.EnumPrinterConnections

For lngI=0 To objPrinters.Count-1
        WScript.Echo objPrinters.Item(lngI) 'Вывод  lngI - го элемента коллекции
Next 
'******************************************************* Конец 

MapNetworkDrive

Метод присоединяет сетевой диск и имеет следующие обязательные параметры:

strRemoteName - сетевой ресурс;
strLocalName- буква локального имени диска.

необязательные параметры:

bUpdateProfile - сохранение в профиле пользователя создаваемое сетевое подключение принтера;
strUser и strPassword - имя пользователя и пароль нужны в том случае, когда вы подключаете сетевой принтер от имени пользователя, которое отличается от имени текущего пользователя, зарегистрированного в системе.

'Листинг 7
'******************************************************* Начало
'* Имя: MapNetworkDrive.vbs
'* Язык: VBScript
'* Описание: Пример подключения сетевого диска
'*******************************************************
Dim objNet


'Создаем объект WshNetwork
Set objNet = WScript.CreateObject("WScript.Network")

'Подключаем диск Q к сетевому ресурсу \\Server1\Programs
objNet.MapNetWorkDrive "Q:","\\Server1\Programs"
'******************************************************* Конец 

Внимание !!!Приведенный в листинге 7 пример присоединяется к гипотетическому ресурсу \\Server1\Program, поэтому возникнет ошибка, замените \\Server1\Programs на реальный сетевой путь, тогда диск Q: подсоеденится безошибочно.

RemoveNetworkDrive

Метод RemoveNetworkDrive отключает подклченный сетевой принтер и имеет обязательный параметр:

strName - буква диска или сетевой путь отключаемого ресурса. Это зависит от того как подключался диск. Если сетевому ресурсу сопоставлена буква локального диска, параметр strName, должен быть локальным имени. Если сетевому ресурсу не сопоставлена никакая буква, то параметр strName должен быть сетевым именем.

Необязательные параметры:

bForce - если значение равно true, то отключение будет произведено вне зависимости используется этот ресурс в настоящее время или нет;
bUpdateProfile - если равно true, то отключаемое сетевое подключение будет удалено из профиля пользователя.

В листинге 8 дан гипотетический пример подключения диска Q к сетевому ресурсу \\Server1\Programs, а затем отключение от него.

'Листинг  8
'******************************************************* Начало
'* Имя: UnMapNetworkDrive.vbs
'* Язык: VBScript
'* Описание: Пример подключения  и отключения сетевого диска
'*******************************************************
Dim objNet


'Создаем объект WshNetwork
Set objNet = WScript.CreateObject("WScript.Network")

'Подключаем диск Q к сетевому ресурсу \\Server1\Programs
objNet.MapNetWorkDrive "Q:","\\Server1\Programs"

'Удаляем сетевой диск Q
objNet.RemoveNetworkDrive "Q:"
'******************************************************* Конец 

RemotePrinterConnection

Метод RemotePrinterConnection отключает подключенный сетевой принтер и имеет следующие обязательный параметр:

strName - строка обозначающая принтер. Принтер может иметь локальное имя или сетевой путь.RemovePrinterConnection метод удаляет соединения принтера. Если принтер принтер при соединении использовал метод AddPrinterConnection, strName должно быть локальное имя принтера .Если принтер при соединении использовал метод AddWindowsPrinterConnection или был добавлен вручную (используя мастер добавления принтер), то strName должно быть сетевое имя.

Необязательные параметры:

bForce - если значение равно true, то отключение будет произведено вне зависимости используется этот ресурс в настоящее время или нет;
bUpdateProfile - если равно true, то отключаемое сетевое подключение будет удалено из профиля пользователя.

В листинге 9 показан гипотетический пример отключения сетевого принтера.

'Листинг  9
'******************************************************* Начало
'* Имя: RemovePrinterConnection.vbs
'* Язык: VBScript
'* Описание: Пример удаления подключения к принтеру
'*******************************************************
Dim objNet, strPath


'Создаем объект WshNetwork
Set objNet = WScript.CreateObject("WScript.Network")

'Сетевой путь к принтеру
strPath = "\\printserv\DefaultPrinter"

'Удаляем принтер указанный в пути strPath
objNet.RemovePrinterConnection strPath, true, true '******************************************************* Конец

SetDefaultPrinter

Данный метод подключает принтер по умолчанию. В параметре strName задаётся сетевое имя принтера, который должен будет использоваться в системе по умолчанию. Дополним листинг 2, получив листинг 10.

'Листинг 10
'******************************************************* Начало
'* Имя: SetDefaultPrinter.vbs
'* Язык: VBScript
'* Описание: Установка принтера по умолчанию.
'*******************************************************

Dim objNet


'Создаем объект WshNetwork
Set objNet = WScript.CreateObject("WScript.Network")

'Подключаем к порту LPT1 сетевой принтер \\Server1\Epson
objNet.AddPrinterConnection "LPT1","\\Server1\Epson"

'Устанавливаем принтер по умолчанию
objNet.SetDefaultPrinter "\\Server1\Epson"
'******************************************************* Конец       
       

P.S. Я благодарен за вопрос моего подписчика Душутина Антона, который получив прошлую рассылку № 8 по специальным папкам спросил, что вот указаны папки для Windows 9x, а если у меня NT/2000/XP/Vista? Разве я не могу воспользоваться этими папками? Дорогие друзья сообщаю, что те специальные папки которые указаны для семейства Windows 9x используются и более молодым семейством программ Windows как то Me/NT/2000/XP/Vista и т.д.

Со мной можносвязаться по e-mail - novopashinwm@mail.ru , icq: 79224401.

Copyright 2008 Новопашин Владимир. Все права защищены.


В избранное