Объект WScript

Объект WScript можно использовать в сценарии WSH сразу, без какого-либо предварительного описания или создания, т.к. его экземпляр создаётся сервером сценариев (CScript.exe или WScript.exe) автоматически. Для использования же всех остальных объектов нужно применять либо метод CreateObject, либо определенное свойство другого объекта.

Свойства объекта WScript позволяют получить полный путь к использующемуся серверу сценариев (wscript.exe или cscript.exe), параметры командной строки, с которыми запущен сценарий, режим его работы (интерактивный или пакетный). Кроме этого, с помощью свойств объекта WScript можно выводить информацию в стандартный выходной поток и читать данные из стандартного входного потока. Также WScript предоставляет методы для работы внутри сценария с объектами автоматизации и вывода информации на экран (в текстовом режиме) или в окно Windows.

Свойства

ArgumentsСодержит указатель на коллекцию WshArguments, в которой находятся параметры командной строки для исполняемого сценария.
BuildVersionСодержит номер сборки сервера сценариев.
FullNameСодержит полный путь к исполняемому файлу сервера сценариев (обычно это C:\WINDOWS\SYSTEM32\CSCRIPT.EXE или C:\WINDOWS\SYSTEM32\WSCRIPT.EXE).
InteractiveРежим запуска скрипта - запрещён (false) или разрешён (true) диалог с пользователем.
NameСодержит название объекта Wscript (Windows Script Host).
PathСодержит путь к каталогу, в котором находится cscript.exe или wscript.exe (обычно это C:\WINDOWS\SYSTEM32).
ScriptFullNameСодержит полный путь к запущенному сценарию.
ScriptNameИмя запущенного файла скрипта.
StdErrПозволяет запущенному сценарию записывать сообщения в стандартный поток для ошибок.
StdInПозволяет запущенному сценарию читать информацию из стандартного входного потока.
StdOutПозволяет запущенному сценарию записывать информацию в стандартный выходной поток.
TimeoutСодержит время в секундах, по истечении которого скрипт будет автоматически остановлен.
VersionСодержит номер версии WSH.

Методы

ConnectObject()Устанавливает соединение с объектом автоматизации для обработки его событий.
CreateObject()Создает программный объект автоматизации.
DisconnectObject()Разрывает соединение с объектом автоматизации.
Echo()Вывод сообщения в окно MessageBox (если скрипт был запущен с помощью WScript.exe) или на консоль (если скрипт был запущен с помощью CScript.exe).
GetObject()Завершение исполнения скрипта с указанным кодом возврата.
Quit()Завершение исполнения скрипта с указанным кодом возврата.
Sleep()Приостановка исполнения скрипта на указанное количество миллисекунд.

Arguments

Синтаксис

// Свойство. Только чтение.

WScript.Arguments

Возвращаемое значение

Объект WshArguments - коллекция параметров, с которыми был запущен скрипт. Объект WshArguments имеет ряд свойств и методов, позволяющих, например, обращаться к именным и безымянным параметрам скрипта по отдельности, и т.д:

Item(n)

Свойство Item возвращает значение n-ного элемента коллекции (нумерация начинается с нуля).

Пример
// Вызов скрипта:
// wscript.exe Path /Name:"Vasya Pupkin" param2 /Computer:Server01 param4
// где "Path" - путь к файлу скрипта.

var objArgs, e, x='';
 objArgs = WScript.Arguments; //Создаем объект WshArguments
var len = objArgs.length;
for (i=0; i < len; i++) {x += objArgs.Item(i) +'\n';}
WScript.Echo(x); //Выводим значения параметров на экран

// Другой способ:
// Создаем объект Enumerator для коллекции objArgs
 e = new Enumerator(objArgs), x='';
 for (;!e.atEnd();e.moveNext()) {
  x += e.item() + '\n';  //Получаем значение элемента коллекции
}
WScript.Echo(x); //Выводим значения параметров на экран
length

Свойство length возвращает число элементов коллекции (количество аргументов, переданных скрипту).

Пример
WScript.Echo ( WScript.Arguments.Length );
Named

Свойство Named возвращает коллекцию именных параметров, переданных скрипту.

Пример
// Вызов скрипта:
// wscript.exe Path /Name:"Vasya Pupkin" param2 /Computer:Server01 param4
// где "Path" - путь к файлу скрипта.

var objNamed = WScript.Arguments.Named;
if ( objNamed.Exists("Name") )  WScript.Echo ("Имя: " + objNamed.Item("Name") );
if ( objNamed.Exists("Computer") ) WScript.Echo ( "Компьютер: " + objNamed.Item("Computer") );
WScript.Echo ( "Число именных параметров: "+ objNamed.Length );
Unnamed

Свойство Unnamed возвращает коллекцию безымянных параметров, переданных скрипту.

Пример
// Вызов скрипта:
// wscript.exe Path /Name:"Vasya Pupkin" param2 /Computer:Server01 param4
// где "Path" - путь к файлу скрипта.

var objUnnamed = WScript.Arguments.Unnamed;
if (objUnnamed.length > 1 ) 
  WScript.Echo (
    "Первый безымянный параметр: " + objUnnamed(0) + 
  "\nВторой  безымянный параметр: " + objUnnamed.Item(1));
Count()

Метод Count() возвращает число элементов коллекции (количество аргументов, переданных скрипту).

Пример
// Вызов скрипта:
// wscript.exe Path /param1 /param2
// где "Path" - путь к файлу скрипта.

WScript.Echo ( WScript.Arguments.Count() );
ShowUsage()

Метод ShowUsage() выводит на экран информацию о запущенном сценарии (описание аргументов, пример запуска). Подобную информацию можно задать только при использовании WSH-сценариев с разметкой XML, поэтому метод имеет смысл только в таких сценариях.

Пример

Запустить сценарий named.wsf следующим образом:
wscript.exe named.wsf /Имя:Popov /Компьютер:404_Popov /Новый+

<job id="Named">
  <runtime>
   <description>
   Имя: named.wsf
   Кодировка: Windows
   </description>
   <named
    name="Имя"
    helpstring="Имя пользователя"
    type="string" required="true"/>
   <named
    name="Компьютер"
    helpstring="Имя рабочей станции"
    type="string" required="false"/>
   <named
    name="Новый"
    helpstring="Признак того, что такого пользователя раньше не было"
    type="boolean" required="true"/>
  </runtime>
  <script language="JScript">
   var objNamedArgs,s;
   s="";

   // Вызываем метод ShowUsage для вывода на экран описания сценария
  WScript.Arguments.ShowUsage();

   // Создаем объект WshNamed - коллекция именных аргументов сценария
  objNamedArgs= WScript.Arguments.Named;

   // Проверяем, существует ли аргумент /Имя:
   if (objNamedArgs.Exists("Имя"))
       //Получаем значение символьного аргумента /Имя
      s+="Имя: "+objNamedArgs("Имя")+"\n";

   // Проверяем, существует ли аргумент /Компьютер:
   if (objNamedArgs.Exists("Компьютер"))
      // Получаем значение символьного аргумента /Компьютер
      s+="Машина: "+objNamedArgs("Компьютер")+"\n";

   //Проверяем, существует ли аргумент /Новый  
   if (objNamedArgs.Exists("Новый"))
      // Получаем с помощью условного оператора значение 
      //логического аргумента /Новый
      s+="Новый пользователь: "+(objNamedArgs("Новый") ? "Да" : "Нет");

   //Выводим полученные строки на экран
   WScript.Echo(s);
  </script>
 </job> 

BuildVersion

Синтаксис

// Свойство. Только чтение.

WScript.BuildVersion

Возвращаемое значение

Номер сборки сервера сценариев.

Пример

WScript.Echo ( WScript.BuildVersion );

ScriptName

Синтаксис

// Свойство. Только чтение.

WScript.ScriptName

Возвращаемое значение

Имя запущенного файла скрипта.

Пример

WScript.Echo ( WScript.ScriptName );

FullName

Синтаксис

// Свойство. Только чтение.

WScript.FullName

Возвращаемое значение

Полный путь к исполняемому файлу сервера сценариев.

Пример

WScript.Echo ( WScript.FullName );

// Результат:
// c:\windows\system32\WScript.exe 

Interactive

Синтаксис

// Свойство. Чтение и запись.

WScript.Interactive [ = true|false ]

Возвращаемое значение

Число (булево). Режим запуска скрипта - запрещён (false) или разрешён (true) диалог с пользователем. Это свойство можно как задавать внутри скрипта, так и проверять с его помощью, не был ли скрипт запущен в пакетном режиме (параметр "//B" сервера сценариев).

Пример

WScript.Echo ( 'Interactive = ' + WScript.Interactive );
WScript.Interactive = false;
WScript.Echo ( 'Interactive = ' + WScript.Interactive ); //Это сообщение НЕ будет выведено

Name

Синтаксис

// Свойство. Только чтение.

WScript.Name

Возвращаемое значение

Наименование сервера сценариев.

Пример

WScript.Echo ( WScript.Name );

// Результат:
// Windows Script Host

Path

Синтаксис

// Свойство. Только чтение.

WScript.Path

Возвращаемое значение

Полный путь к каталогу исполняемого файла сервера сценариев.

Пример

WScript.Echo ( WScript.Path );

// Результат:
// c:\windows\system32 

ScriptFullName

Синтаксис

// Свойство. Только чтение.

WScript.ScriptFullName

Возвращаемое значение

Полный путь к запущенному файлу скрипта.

Пример

WScript.Echo ( WScript.ScriptFullName );

ScriptName

Синтаксис

// Свойство. Только чтение.

WScript.ScriptName

Возвращаемое значение

ПИмя запущенного файла скрипта.

Пример

WScript.Echo ( WScript.ScriptName );

StdErr

Синтаксис

// Свойство. Только чтение.

WScript.StdErr

Возвращаемое значение

Объект "TextStream", соответствующий стандартному потоку ошибок. Доступен, если скрипт запущен с помощью CScript.exe.

Пример

WScript.StdErr.Write ("Hello, StdErr!");

StdIn

Синтаксис

// Свойство. Только чтение.

WScript.StdIn

Возвращаемое значение

Объект "TextStream", соответствующий стандартному входному потоку. Доступен, если скрипт запущен с помощью CScript.exe.

Пример

WScript.StdOut.Write ("Input: ");
var s = WScript.StdIn.ReadLine()
WScript.Echo ( s );

StdOut

Синтаксис

// Свойство. Только чтение.

WScript.StdOut

Возвращаемое значение

Объект "TextStream", соответствующий стандартному выходному потоку. Доступен, если скрипт запущен с помощью CScript.exe.

Пример

WScript.StdOut.Write ("Input: ");
var s = WScript.StdIn.ReadLine
WScript.Echo ( s );

Timeout

Синтаксис

// Свойство. Чтение и запись.

WScript.Timeout [ = sec ]

Возвращаемое значение

Время в секундах, по истечении которого скрипт будет автоматически остановлен.

Пример

// Если время исполнения скрипта превысит 5 секунд, он будет завершен. 
WScript.Timeout = 5;

Version

Синтаксис

// Свойство. Только чтение.

WScript.Version

Возвращаемое значение

Версия сервера сценариев.

Пример

WScript.Echo ( WScript.Version );

ConnectObject()

Метод ConnectObject() устанавливает соединение с объектом автоматизации для обработки его событий.

Синтаксис

WScript.ConnectObject( Obj, Prefix )

Параметры

Obj
Объект.
Prefix
Строка. Префикс функций-обработчиков событий. Когда объект сообщает о возникновении события, сервер сценариев вызывает соответствующую функцию. Например, если был указан префикс "Evt_", а событие называется "OnBegin", будет вызвана функция "Evt_OnBegin", которая должна быть описана в сценарии.

Комментарии

Объект должен предоставлять интерфейс к своим событиям.

CreateObject()

Метод CreateObject() создаёт программный объект автоматизации.

Синтаксис

WScript.CreateObject( ProgID, Prefix )

Параметры

ProgID
Строка, программный идентификатор объекта (ProgID).
Prefix
Необязательный, строка. Префикс функций-обработчиков событий. Если объект предоставляет интерфейсы для связи с событиями, после создания объекта с указанием этого параметра в сценарии можно обрабатывать события, возникающие в этом объекте. Когда объект сообщает о возникновении события, сервер сценариев вызывает соответствующую функцию. Например, если был указан префикс "Evt_", а событие называется "OnBegin", будет вызвана функция "Evt_OnBegin", которая должна быть описана в сценарии.

Пример

var Network = WScript.CreateObject("WScript.Network")
WScript.Echo ( Network.ComputerName );

DisconnectObject()

Метод DisconnectObject() разрывает соединение с объектом автоматизации (созданное ранее для обработки его событий).

Синтаксис

WScript.DisconnectObject( Obj )

Параметры

Obj
Объект.

Комментарии

Если соединения с объектом не было установлено ранее, метод не производит никаких действий.

Echo()

Метод Echo() выводит сообщение в окно MessageBox (если скрипт был запущен с помощью WScript.exe) или на консоль (если скрипт был запущен с помощью CScript.exe).

Синтаксис

WScript.Echo( Arg1, Arg2, Arg3, ... )

Параметры

Arg1, Arg2, ...
Необязательные параметры. При выводе аргументы будут разделены пробелами. В случае использования CScript.exe вывод будет завершён символом новой строки. Если аргументы не заданы, будет выведена пустая строка.

Пример

WScript.Echo ( "раз", 25 );

GetObject()

Метод GetObject() создаёт программный объект автоматизации.

Синтаксис

WScript.GetObject( Pathname, ProgID, Prefix )

Параметры

Pathname
Строка, полный путь к файлу, содержащему объект.
ProgID
Необязательный, строка. Программный идентификатор объекта (ProgID).
Prefix
Необязательный, строка. Префикс функций-обработчиков событий. Если объект предоставляет интерфейсы для связи с событиями, после создания объекта с указанием этого параметра в сценарии можно обрабатывать события, возникающие в этом объекте. Когда объект сообщает о возникновении события, сервер сценариев вызывает соответствующую функцию. Например, если был указан префикс "Evt_", а событие называется "OnBegin", будет вызвана функция "Evt_OnBegin", которая должна быть описана в сценарии.

Комментарии

Метод используется, если создаваемый объект уже существует в памяти или создаётся из файла. Если создаваемый объект поддерживает создание только одного экземпляра, будет создан только один экземпляр объекта, независимо от того, сколько раз будет вызван метод GetObject.

Quit()

Метод Quit() завершает исполнение скрипта с указанным кодом возврата.

Синтаксис

WScript.Quit( ErrorCode )

Параметры

ErrorCode
Необязательный, число, код возврата приложения.

Пример

WScript.Quit (1);
WScript.Echo ( "Message!"); // Этот оператор никогда не будет исполнен.

Sleep()

Метод Sleep() приостановливает исполнение скрипта на указанное количество миллисекунд.

Синтаксис

WScript.Sleep( Time )

Параметры

Time
Число, количество миллисекунд.

Пример

WScript.Echo ( 'Now' );
WScript.Sleep (4000);
WScript.Echo ( 'Now' );