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

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


Выпуск #06

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

29 августа 2008

Уважаемый подписчик!

Продолжаем знакомиться с объектами WSH. В этом выпуске рассылки мы познакомимся с объектами - коллекциями по работе с командной строкой.

Объекты для работы с командной строкой

Для работы с командной строки используются объекты WshArguments, WshNamed и WshUnnamed

Объект WshArguments

Объект WshArguments содержит коллекцию всех параметров командной строки запущенного сценария или ярлыка Windows. Этот объект можно создать только с помощью свойства Arguments объект WScript и WshShortcut.

В таблице 1 рассмотрены свойства и методы объекта WshArguments.

Таблица 1.

Свойства и методы объекта WshArguments

Наименование
Описание
Свойства
Item(n)

Возвращает элемент коллекции аргументов.Параметры:

n - номер аргумента, начиная с нуля.

Count, Length Число аргументов в командной строке
Named Коллекция WshNamed
UnNamed Коллекция WshUnNamed

В Листинге 1 приведен пример вывода всех аргументов командной строки.

Листинг 1

 
'==========================================  Начало файла 
'Имя: ShowArgs.vbs 
'Язык: VBScript 
'Описание: Вывод на экран параметров запущенного сценария 
'========================================================== 
 Dim lngI, objArgs 
 Set objArgs= WScript.Arguments 'Создаём объект WshArguments
 For lngI=0 To objArgs.Count-1 
     WScript.Echo (objArgs(lngI)) 'Выводим значение lngI-го параметра 
 Next 
'==========================================  Окончание файла 

Запустим наш файл через csript, например csript ShowArgs.vbs /name:Andrey /1 /2 /3.

С помощью объекта WshArguments можно также выделять и отдельно обрабатывать аргументы сценария, у которых имеются имена (например /name:Andrey) и безымянные аргументы. Ясно, что использование именных параметров более удобно, т.к. в этом случае нет необходимости запоминать, в каком порядке должны быть записаны параметры при запуске того или иного сценария.

Для доступа к именным и безымянным аргументам используются соответственно два специальных свойства объекта WshArguments: Named и UnNamed.

Объект WshNamed

Объект WshNamed содержит коллекцию параметров командной строки запущенного сценария, у которых имеется уникальное имя (именные параметры). Именной параметр начинается с символа "/", после чего приводится имя этого параметра, затем ставится двоеточие ":" и пишется значение параметра, например:

/name:Vladimir

В качестве значения именного параметра рассматривается набор символов начинающихся после двоеточия и заканчивающихся перед первым встретившимся пробелом. Для того чтобы значением параметра командной строки была строка, состоящая из нескольких слов, необходимо заключить строку в кавычки. Например:

/name:"Ivan Ivanovich"

Создаётся объект WshNamed с помощью свойства Named коллекции WshArguments. Для того, чтобы получить значение определенного аргумента, используется его имя в качестве индекса коллекции. В таблице 2 рассмотрены свойства и методы объекта

Таблица 2.

Свойства и методы объекта WshNamed

Наименование
Описание
Свойства
Item("key")

Возвращает элемент коллекции аргументов.Параметры:

key - имя аргумента.

Length Число аргументов в командной строке
Методы
Exists("key") Проверка существования именнованого аргумента key в коллекции.

В листинге 2 представлена программа вывода значения аргументов User и Computer.

Листинг 2

 
'==========================================  Начало файла 
'Имя: WshName1.vbs 
'Язык: VBScript 
'Описание: Вывод на экран именнованых параметров запущенного сценария 
'========================================================== 
Dim objNamedArgs 
Set objNamedArgs= WScript.Arguments.Named 'Создаём объект WshNamed 
WScript.Echo ("Имя пользователя:" & objNamedArgs.Item("User")) 
WScript.Echo ("Имя компьютера:" & objNamedArgs.Item("Computer")) 
'==========================================  Окончание файла 

Запустим сценарий Cscript WshName1.vbs /User:Alex /Computer:WorkStation. Можно убрать Item и получим тот же самый результат.

Листинг 3

'==========================================   Начало файла 
'Имя: WshName2.vbs 
'Язык: VBScript 
'Описание: Вывод на экран именнованых параметров запущенного  сценария 
'========================================================== 
Dim objNamedArgs 
Set objNamedArgs= WScript.Arguments.Named  'Создаём объект WshNamed
WScript.Echo ("Имя пользователя:" & objNamedArgs("User")) 
WScript.Echo ("Имя компьютера:"   & objNamedArgs("Computer")) 
'==========================================   Окончание файла 

Запустим сценарий Cscript WshName2.vbs /User:Alex /Computer:WorkStation.

Отметим, что значением именного параметра, как и безымянного, может служить целая строка, состоящая из нескольких литералов и заключенная в кавычки, например как в листинге 4:

Листинг 4

'==========================================  Начало файла 
'Имя: WshName3.vbs 
'Язык: VBScript 
'Описание: Вывод на экран именнованых параметров запущенного сценария 
'========================================================== 
Dim objNamedArgs 
Set objNamedArgs= WScript.Arguments.Named  'Создаём объект WshNamed
WScript.Echo ("Имя пользователя:"   & objNamedArgs("User")) 
'==========================================  Окончание файла 
                

Запустим наш скрипт cscript wshname3.vbs /User:"Андрей Попов" .

Введем в листинг 3 проверку на существование именнованных параметров используя метод Exists. В результате полчаем листинг 5.

'========================================== Начало файла
'Имя: WshName4.vbs
'Язык: VBScript
'Описание: Вывод на экран именнованых параметров запущенного сценария
'          с проверкой существования именнованных параметров
'==========================================================

Dim objNamedArgs       
Set objNamedArgs= WScript.Arguments.Named  'Создаём объект WshNamed

'Проверяем на существование параметра User
If objNamedArgs.Exists("User") Then
'Если существует выводим имя пользователя   
   WScript.Echo ("Имя пользователя:" & objNamedArgs("User"))
Else
'Если нет, то выдаём предупреждение
   WScript.Echo ("Отсутствует аргумент User - 'Имя пользователя'")
End If 

'Проверяем на существование параметра Computer
If objNamedArgs.Exists("Computer") Then
'Если существует выводим имя компьютера
   WScript.Echo ("Имя компьютера:" & objNamedArgs("Computer"))
Else
'Если нет, то выдаём предупреждение
   WScript.Echo ("Отсутствует аргумент Computer - 'Имя компьютера'") 
End If 
'========================================== Окончание файла      

Проверить работу скрипта можно запустив файл WshName4.vbs в 4вариантах:

  1. cscript WshName4.vbs
  2. cscript WshName4.vbs /User:"Иванов Иван"
  3. cscript WshName4.vbs /Computer:Server2
  4. cscript WshName4.vbs /User:"Иванов Иван" /Computer:Server2

Объект WshUnnamed

В коллекции WshUnnamed содержатся параметры командной строки запущенного сценария, у которых нет имени. Создаётся этот объект с помощью свойства UnNamed коллекции WshArguments. Для того , чтобы получить значение определенного аргумента, в качестве индекса используется его номер (начиная с нуля).

Листинг 5

 
'========================================== Начало файла
'Имя: WshUnNamed.vbs
'Язык: VBScript
'Описание: Вывод на экран не именнованых параметров запущенного сценария
'==========================================================

Dim objUnNamedArgs       
Set objUnNamedArgs= WScript.Arguments.UnNamed  'Создаём объект WshArguments

WScript.Echo ("Имя пользователя:" & objUnNamedArgs(0))

WScript.Echo ("Имя компьютера:" & objUnNamedArgs(1))
'========================================== Окончание файла

Запустим скрипт с помощью команды cscript WshUnName1.vbs "Андрей Попов" Server2.

В следующем выпуске рассылки продолжим рассмотрение объектов-коллекций.

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

 

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


В избранное