СКРИПТОВЫЕ ЯЗЫКИ ПРОГРАММИРОВАНИЯ Введение в Windows Script Host Лекция 2 преподаватель кафедры ТМСИ Губин Максим Владимирович Возможности WSH Резервирование и восстановление файлов в системе. Выключение или перезапуск Windows одним щелчком. Выполнение задач связанных с завершением работы системы, например, резервное копирование или ведение протоколов, журналов. Интегрирование приложений с их данными. Например, сценарий может запустить приложение из пакета Office, загрузить и обработать документ, вывести его на печать и закрыть приложение. Подобным образом вы можете ассоциировать документ с любым приложением. Решение задач администрирования системы. Добавление, обновление и удаление пользовательских учетных записей. Прямой доступ к оболочке Windows. Для создания ярлыков или подключения сетевых устройств, таких как диски и принтеры через соответствующие объекты. Считывание значений переменных окружения и получение сведений о Windows. Запуск программ и управление объектами Automation. Вывод диалоговых окон, информирующих пользователя о состоянии программы или получающих вводимую им информацию. Обращение к оболочке Windows и интерфейсам прикладного программирования 2 (API) для управления окнами и приложениями. WSH 2.0 Первоначально WSH 1 поставлялся с Windows NT 4 Option Pack. Он также входит в состав Windows 98. Если WSH 1 не активен, его следует установить как дополнительный компонент Windows. WSH 2 - неотъемлемая часть Windows 2000, так что если вы работаете в этой ОС, установка WSH 2 не требуется. Чтобы выяснить, установлен ли в вашей системе WSH, выполните wscript /? 3 Отличия VBScript от Visual Basic/VBA и JScript - от JavaScript Скрипты не могут быть скомпилированы в EXE-файлы. В WSH придется держать все сценарии в простых текстовых .vbs-, .js- или .wsfфайлах. Для интерпретации содержимого файла сценария WSH использует обработчики Windows Script, так что можно создавать сценарии с помощью простого текстового редактора (Notepad). В языки VBScript и JScript (поставляются с WSH 2) не входят конструкции вроде оператора Declare из Visual Basic и VBA, позволяющие обращаться к внешним функциям и процедурам. В VBScript нет процедур для расширенной обработки ошибок в период выполнения (таких как On Error GoTo метка). Ни VBScript, ни JScript не поддерживают явное объявление типов данных. Любая переменная рассматривается как Variant. Объектная модель WSH отличается от объектной модели Internet Explorer. Так, в WSH не поддерживается объект window.document для вывода информации пользователем. 4 Способы выполнения сценариев Windows Microsoft Internet Explorer позволяет выполнять сценарии (обычно на Java Script), содержащиеся в HTML-страницах, на клиентских машинах. Internet Information Services (IIS) поддерживает технологию Active Server Pages (ASP), позволяющую запускать сценарии (как правило, на VBScript) на Web-серверах. Сервер Сценариев Windows (WSH) позволяет выполнять сценарии, непосредственно в графическом окне Windows или в текстовой консоли, при этом нет необходимости встраивать тексты сценариев в документ HTML. 5 Создание и использование сценариев '************************************************ ' Файл: Hello.vbs (пример для WSH на VBScript) ' Автор: (c) G. Born ' Выводит простое диалоговое окно '************************************************ WScript.Echo “Hello, world” '*** Конец 6 //************************************************ // Файл: Hello.js (Пример для WSH на JScript) // Автор: (c) G. Born // // Выводит простое окно сообщения //************************************************ WScript.Echo("Hello, world"); //*** Конец 7 Реализация сервера сценариев WSH реализован в двух файлах: WScript.exe - это сервер сценариев, предназначенный для взаимодействия с пользователем через диалоговые окна Windows. CScript.exe - это консольное приложение Windows (работает в окне командной строки и посылает выходную информацию STDOUT подобно встроенным командам MS-DOS). CScript.exe предназначен главным образом для неинтерактивных задач. В Windows оба сервера располагаются в папке \Windows\System32. 8 Запуск сценария Запустим сценарий через диалоговое окно Run используя WScript.exe или CScript.exe (этот метод особенно удобен, когда сценарию требуется передать аргументы). Для этого: в меню Start выберем команду Run; в текстовом поле Open введём исполнимую команду (например, WScript.exe C:\Test\Hello.vbs); нажимаем OK, чтобы закрыть диалоговое окно и исполнить сценарий. 9 Параметры запуска сценариев 10 Дополнительные свойства сценария Нужно щелкнуть сценарий правой кнопкой, выбрать из контекстного меню Properties и установить нужные значения на странице свойств сценария. Windows создаст новый файл с именем файла сценария и расширением .wsh. Файлы с расширением .wsh - это текстовые файлы, похожие на .ini-файлы. Их можно открывать в любом текстовом редакторе. [ScriptFile] Path=C:\WSHDevGuide\Chapter01\Hello.js [Options] Timeout=10 DisplayLogo=1 11 '************************************************ ' Файл: Args.vbs (Пример для WSH на VBScript) ' Автор: (c) G. Born ' Выводит в диалоговом окне все переданные аргументы '************************************************ text = "Arguments" & vbCrLf & vbCrLf Set objArgs = WScript.Arguments ' Создать объект. For i = 0 to objArgs.Count – 1' Цикл для обработки аргументов. text = text & objArgs(i) & vbCrLf ' Получить аргумент. Next WScript.Echo text ' Показать аргумент с помощью метода Echo. '*** Конец 12 Пример WScript.exe "./Args.vbs" "Hello, world" WScript.exe "./Args.vbs" "Hello, world" 1 2 3 СScript.exe "./Args.vbs" "Hello, world" 1 2 3 СScript.exe "./Args.vbs" "Hello, world" 1 2 3 > test.txt 13 //************************************************ // Файл: Args.js (Пример для WSH на JScript) // Автор: (c) G. Born // Выводит аргументы сценария в диалоговом окне //************************************************ var objArgs;var text = "Arguments \n\n"; var objArgs = WScript.Arguments; // Создать объект. for (var i = 0; i < objArgs.length; i++) // Цикл для обработки аргументов. text = text + objArgs(i) + '\n'; // Получить аргумент. WScript.Echo(text); // Показать аргументы с помощью метода Echo. //*** Конец 14 Windows script file Microsoft определен формат файлов с расширением .wsf ("Windows script file"). Файл .wsf с минимальным набором команд имеет такую структуру: <job id="T1"> <script language="VBScript"> WScript.Echo "Hello, world" </script> </job> Тэги описывают элементы XML, а элемент <script> ... </script> содержит обычный код сценариев. 15 Пример на .wsf <?xml version="1.0" encoding="ISO-8859-1"?> <job id="T1"> <script language="JScript" src="/contents/Hello.js"/> <script language="VBScript"> <![CDATA[ text = "world" WScript.Echo "Hello, " & text ]]> </script> </job> 16 Использование библиотек типов <?xml version="1.0" encoding="ISO-8859-1"?> <job id="TypeLibExample"> <reference guid='{420B2830-E718-11CF-893D-00A0C9054228}'/> <script language="VBScript"> <![CDATA[ WScript.Echo "CDRom = " & CDRom & vbCrLf & _ "Fixed = " & Fixed & vbCrLf & _ "RamDisk = " & RamDisk & vbCrLf & _ "Remote = " & Remote & vbCrLf & _ "Unknown = " & Unknown & vbCrLf & _ "Removable = " & Removable // используется ссылка // на объект FileSystemObject ]]> </script> </job> 17 Отладочные функции Операторы типа stop и debugger из .vbs- и .js файлов позволяют автоматически вызвать установленный отладчик. Для отладки сценария в среде WSH 2 при его вызове надо указать один из переключателей командной строки, //D или //X. Отлаживать .wsf-файл позволяет команда <?job debug="true"?> HKEY_CURRENT_USER\Software\Microsoft\Windows Script\Settings установите параметр JITDebug в 1 18 Пример <?xml version="1.0" encoding="ISO-8859-1"?> <job id="T1"> <?job debug="true"?> <script language="VBScript"> stop WScript.Echo "Hello" </script> <script language="JScript"> debugger; WScript.Echo("Hello else"); </script> </job> 19