Сервер сценариев wscript.exe, начиная с Windows 98, является стандартным компонентом Windows Script Host (WSH), и предназначен для выполнения сценариев (скриптов), написанных на языках VBScript и Jscript. Возможности сценариев WSH значительно выше возможностей командных файлов Windows, что позволяет решать многие задачи управления и контроля системы стандартными средствами без использования дополнительного программного обеспечения.
Сценарии WSH могут исполняться в среде сервера сценариев Windows с помощью одной из двух программ — wscript.exe (с графическим интерфейсом) или cscript.exe (с консольным интерфейсом). Функционально, обе программы близки, но графический интерфейс более удобен для выполнения интерактивных сценариев, а консольный – для сценариев администрирования, не требующих диалога с пользователем. Диалоговый режим при выполнении сценариев как с использованием wscript.exe, та и с использованием cscript.exe может быть отключен специальным параметром командной строки. Большинство сценариев администрирования Windows (в том числе многие сценарии, предлагаемые Microsoft) требуют использовать CScript в качестве сервера сценариев. Также следует отметить, что некоторые из свойств объекта WScript (не путать с сервером сценариев WScript!) существуют только тогда, когда активным сервером сценариев является CScript. По умолчанию, в среде WSH используется сервер сценариев wscript.exe
При запуске wscript.exe без параметров, отображается окно Параметры сервера сценариев Windows:
Как видим, имеется всего лишь возможность ограничить время выполнения сценариев и изменить режим отображения сведений о программе в консольном режиме.
1. Описание команды wscript.
Для получения справки по работе с программой, можно воспользоваться командой:
C:\ wscript /?
1.1. Формат командной строки wscript.exe:
C:\ wccript имя_сценария.расширение [параметры...] [аргументы...]
1.2. Параметры командной строки:
- //B — Пакетный режим: подавляются отображение ошибок и запросов сценария
- //D — Включение режима Active Debugging
- //E:ядро — Использование указанного ядра для выполнения сценария
- //H:CScript — Стандартный сервер сценариев заменяется на CScript.exe
- //H:WScript — Стандартный сервер сценариев заменяется на WScript.exe (по умолчанию)
- //I — Диалоговый режим (по умолчанию, в противоположность //B)
- //Job:xxxx — Выполнение указанного задания WSF
- //Logo — Отображать сведения о программе (по умолчанию)
- //Nologo — Не отображать сведения о программе во время выполнения
- //S — Присвоить установкам сервера сценариев Windows значения по умолчанию.
- //T:nn — Интервал ожидания (в секундах): максимальное время выполнения сценария
- //X — Выполнение сценария в отладчике
Отличительная особенность параметров командной строки для сервера сценариев – это использование двойной косой черты (двойной прямой слэш – forward slash). Для получения подсказки по использованию, допускаются команды wscript /? и wscript -?
2. Примеры использования сервера сценариев CSCript.
2.1. Выполнить сценарий hello1.vbs в графическом режиме:
C:\ wscript //B hello1.vbs
2.2. Выполнить сценарий hello1.vbs в среде отладчика c использованием средств активной отладки:
C:\ wscript //D //X hello1.vbs
Порядок работы и возможности определяются отладчиком, установленным в системе по умолчанию.
2.3. Выполнить сценарий hello1.js но использовать исполняющее ядро VBScript.Encode:
C:\ wscript.exe /E:VBScript.Encode hello1.js
Надо отметить, что программный модуль wscript.exe, как и cscript.exe, будучи сервером сценариев, не является интерпретатором языка, на котором написан сценарий, и всего лишь выполняет вызов интерпретатора в соответствии с расширением файла или в соответствии со значением параметра //E:.
В качестве интерпретаторов используются динамические библиотеки:
- jscript.dll — для языка Jscript
- vbscript.dll — для языка VBScript
2.4. Установить в качестве сервера сценариев, используемого по умолчанию cscript.exe:
C:\ wscript.exe /H:CScript
После выполнения команды, отображается стандартное окно сообщения Windows:
Используемый по умолчанию сервер сценариев: "cscript.exe".
Стандартно, сервером сценариев по умолчанию, является wscript.exe.
2.5. Выполнить сценарий hello1.vbs в интерактивном режиме:
C:\ wscript //I hello1.vbs
Сценарий будет выполнен с отображением сообщений и запросов пользователю ( противоположность параметру //B).
2.6. Выполнить задачу с идентификатором main, параметры которой описываются содержимым файла job1.wsf:
C:\ wscript //Job:main job1.wsf
Файл с параметрами задачи представляет собой XML-файл, обрабатываемый сервером сценариев в соответствии с указанными XML — элементами. Обычно, файлы .wsf используются в тех случаях, когда необходимо в рамках одного сценария выполнить фрагменты исходного кода, написанные на разных языках программирования.
Например:
<job id=”main”> <script language="VBScript"> Фрагмент на языке VBScript </script> <script language="JScript"> Фрагмент на языке JScript </script> </job>
В частности, использование задач .wsf продиктовано необходимостью реализации пользовательского ввода для сценариев на языке JScript. В реализации языка такой ввод отсутствует, но в VBScript есть функция InputBox которая как раз и позволяет это сделать. Обычно, в разделе на языке VBScript описывается пользовательская функция (например, InputString) для ввода значения посредством функции InputBox. А из раздела на языке JScript выполняется обращение к функции InputString так, как будто она была написана на этом же самом языке.
Пример сценария, в котором выполняется запрос пользователю на ввод данных в графическом окне, выводимом фрагментом исходного кода на языке VBScript, и вывод введенных данных в окне, отображаемом фрагментом исходного кода на языке JScript:
<job id=Str1> <script language="VBScript"> Function InputString(StrWords) ' Описываем функцию на языке VBScript InputString = InputBox(StrWords, "Вводимая строка данных") End Function </script> <script language="JScript"> var OutString; var queryString='Сообщение пользователю. Введите строку:'; OutString = InputString(queryString); //Вызываем функцию InputString //Выводим значение переменной OutString на экран WScript.Echo(”Введенная строка”+" - "+ OutString +"!"); </script> </job>
2.7. Выполнить задачу с идентификатором Str1 из файла hello1.wsf:
C:\ wscript //Job:Str1 hello1.wsf
2.8. Присвоить установкам сервера сценариев Windows значения по умолчанию:
C:\ wscript //S
В справке, отображаемой по команде wscript /?, параметр //S трактуется как ”Сохранить для данного пользователя текущие параметры командной строки”, что не совсем верно. Попробуйте в качестве сервера сценариев по умолчанию задать cscript.exe, а затем выполните команду wscript //S, в результате чего, сервером сценариев по умолчанию снова станет wscript.exe.
2.9. Аналогично рассмотренным выше примерам, но на выполнение сценария отводится 5 секунд:
C:\ wscript //T:5 //Job:Str1 hello1.wsf
По истечении указанного времени сценарий будет принудительно завершен ( например, если пользователь не отвечает на запрос сценария). При использовании параметра //T:, ограничивается время выполнения текущего сценария, в отличие от настройки параметра ”Остановить сценарий после указанного числа секунд”, который ограничивает время выполнения всех сценариев. Если ограничение по времени в настройках сервера сценариев и заданное параметром //T: различаются, то будет применено значение указанное в //T:
Параметры Logo и Nologo имеют практический смысл при использовании сервера сценариев в консольном режиме (cscript.exe). Регистр символов в параметрах командной строки значения не имеет.