- WScript – сервер сценариев Windows с графическим интерфейсом.
- Примеры использования сервера сценариев CSCript
- Что такое Windows Script Host?
- Что такое Windows Script Host
- Файлы Windows Script Host
- Автоматизация работы с использованием Windows Scripting Host
- Преимущества Windows Scripting Host
- Хост и скриптовые машины
- Объекты WSH
- Что вам нужно для начала
- Создание и запуск скриптов
- Пример скрипта
- Использование WSH и WMI для создания Logon-скриптов
WScript – сервер сценариев Windows с графическим интерфейсом.
Сервер сценариев 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 :
Как видим, имеется всего лишь возможность ограничить время выполнения сценариев и изменить режим отображения сведений о программе в консольном режиме.
Для получения справки по работе с программой, можно воспользоваться командой:
Справка отображается в стандартном окне сообщений Windows:
Формат командной строки wscript.exe :
wccript имя_сценария.расширение [параметры. ] [аргументы. ]
Параметры командной строки:
//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 -?
Примеры использования сервера сценариев CSCript
wscript //B hello1.vbs — выполнить сценарий hello1.vbs в графическом режиме.
wscript //D //X hello1.vbs — выполнить сценарий hello1.vbs в среде отладчика c использованием средств активной отладки. Порядок работы и возможности определяются отладчиком, установленным в системе по умолчанию.
wscript.exe /E:VBScript.Encode hello1.js — выполнить сценарий hello1.js но использовать исполняющее ядро VBScript.Encode . Надо отметить, что программный модуль wscript.exe , как и cscript.exe , будучи сервером сценариев, не является интерпретатором языка, на котором написан сценарий, и всего лишь выполняет вызов интерпретатора в соответствии с расширением файла или в соответствии со значением параметра //E: . В качестве интерпретаторов используются динамические библиотеки:
jscript.dll — для языка Jscript
vbscript.dll — для языка VBScript
wscript.exe /H:CScript — установить в качестве сервера сценариев, используемого по умолчанию cscript.exe . После выполнения команды, отображается стандартное окно сообщения Windows:
Используемый по умолчанию сервер сценариев: «cscript.exe».
Стандартно, сервером сценариев по умолчанию, является wscript.exe .
wscript //I hello1.vbs — выполнить сценарий hello1.vbs в интерактивном режиме. Сценарий будет выполнен с отображением сообщений и запросов пользователю ( противоположность параметру //B ).
wscript //Job:main job1.wsf — выполнить задачу с идентификатором main , параметры которой описываются содержимым файла job1.wsf . Файл с параметрами задачи представляет собой XML-файл, обрабатываемый сервером сценариев в соответствии с указанными XML — элементами. Обычно, файлы .wsf используются в тех случаях, когда необходимо в рамках одного сценария выполнить фрагменты исходного кода, написанные на разных языках программирования. Например:
В частности, использование задач .wsf продиктовано необходимостью реализации пользовательского ввода для сценариев на языке JScript. В реализации языка такой ввод отсутствует, но в VBScript есть функция InputBox которая как раз и позволяет это сделать. Обычно, в разделе на языке VBScript описывается пользовательская функция (например, InputString ) для ввода значения посредством функции InputBox . А из раздела на языке JScript выполняется обращение к функции InputString так, как будто она была написана на этом же самом языке.
Пример сценария, в котором выполняется запрос пользователю на ввод данных в графическом окне, выводимом фрагментом исходного кода на языке VBScript, и вывод введенных данных в окне, отображаемом фрагментом исходного кода на языке JScript:
Для запуска задачи используется команда:
wscript //Job:Str1 hello1.wsf — выполнить задачу с идентификатором Str1 из файла hello1.wsf
wscript //S — Присвоить установкам сервера сценариев Windows значения по умолчанию. В справке, отображаемой по команде wscript /? , параметр //S трактуется как ”Сохранить для данного пользователя текущие параметры командной строки”, что не совсем верно. Попробуйте в качестве сервера сценариев по умолчанию задать cscript.exe, а затем выполните команду wscript //S , в результате чего, сервером сценариев по умолчанию снова станет wscript.exe
wscript //T:5 //Job:Str1 hello1.wsf — аналогично рассмотренным выше примерам, но на выполнение сценария отводится 5 секунд. По истечении указанного времени сценарий будет принудительно завершен ( например, если пользователь не отвечает на запрос сценария). При использовании параметра //T:, ограничивается время выполнения текущего сценария, в отличие от настройки параметра ”Остановить сценарий после указанного числа секунд”, который ограничивает время выполнения всех сценариев. Если ограничение по времени в настройках сервера сценариев и заданное параметром //T: различаются, то будет применено значение указанное в //T:
Что такое Windows Script Host?
Раньше основной операционной системой для компьютеров считалась MS-DOS. Именно тогда возникла необходимость в постоянном выполнении определенных последовательностей действий. Осуществлять их вручную было крайне неразумно. С целью реализации поставленной задачи разработаны bat-файлы. Операционные системы улучшались, но некоторые вещи в них практически не претерпевали изменений. Размеры bat-файлов постоянно увеличивались, поскольку они выполняли всё более значительный список задач. Выход Windows ознаменовал возникновение серьёзной конкуренции в указанной сфере. Она появилась в результате возникновения Windows Script Host (сокращенно WSH).
Что такое Windows Script Host
Файлы WSH предполагают написание на скриптовых языках, куда следует отнести JScript, VBScript, Active Perl, Python и некоторые другие. Они позволяют осуществлять определенную последовательность действий на устройстве. Существует несколько преимуществ перед bat-файлами. Наиболее важным достоинством можно отметить увеличенный спектр действий:
- Создание ярлыков для приложений
- Отключение устройства
- Внесение корректировок в реестр операционной системы
- Работа с сетью
- Переключение пользователей и получение информации о них
- Внесение изменений в переменные окружения
- Вывод на экран различного типа информационных сообщений
Выше перечислена только часть из возможных действий. Полный список отличается своим разнообразием и позволяет писать сценарии практически для любой ситуации. Windows Script Host стал отличным улучшением для новой операционной системы, пришедшей на смену DOS. Что особенно важно, научиться пользоваться предложенными возможностями довольно просто и не составит большого труда.
WSH особенно полезен для администраторов. Это связывается с особенностями внесения изменений в реестр. Не предусматривается выдачи на экран каких-либо сообщений о необходимости подтверждения действий. Подобный фактор позволяет выполнить нужные работы без отвлечения пользователя.
Файлы Windows Script Host
Документы данного типа можно разделить на две основные категории, в зависимости от расширения:
- js – для их написания используется JScript
- vbs – создаются с применением VBScript
Существуют некоторые отличия в синтаксисе, но они являются незначительными. Если Вы знакомы с одним из описанных языков, то в понимании другого не возникнет проблем. Для чтения файлов должны применяться специальные библиотеки. В операционных системах от Windows они являются встроенными и не потребуется осуществлять дополнительную загрузку. На некоторых версиях пакета библиотек нет и следует провести скачивание с официального сайта. Уточнить подобный момент достаточно просто – надо ввести в поиске wscript.exe.
Для написания Windows Script Host документа требуется воспользоваться любым текстовым редактором. Можно использовать специализированные программы, что несколько упрощает поставленную задачу для пользователя.
Автоматизация работы с использованием Windows Scripting Host
Помните ВАТ-файлы DOS? Это было прекрасное средство автоматизации повторяющихся задач. Windows, увы, не предложила эквивалентной замены, а средства сторонних разработчиков не прижились по различным причинам. Но положение, похоже, может исправиться. Windows Scripting Host (WSH) — новый, независимый от языка скрипт-хост для Win9x и NT, позволяет строить аналоги ВАТ-файлов на Visual Basic Scripting Edition, JScript и других скриптовых языках, например, Active Perl или Python.
Здесь мы обсудим некоторые преимущества Windows Scripting Host.
Преимущества Windows Scripting Host
Раньше единственным поддерживаемым Windows скриптовым языком был командный язык DOS. Но его возможности довольно бедны по сравнению с VBScript и JScript. Хотя командный язык DOS по прежнему поддерживается, современные ActiveX-скрипты позволяют решать более сложные задачи.
Cкрипт может принимать решения на основе использования полноценных операторов If/Else. Сценарий может выполнять один набор команд, если данное условие истинно, или другой набор, если условие ложно. Кроме того, JScript и VBScript хороши при выполнении математических операций, включая общие тригонометрические функции.
Другое свойство Windows Scripting Host заключается в том, что скрипты могут исполняться вне браузера. Достаточно кликнуть по файлу с текстом скрипта или ввести его название в командной строке,чтобы запустить его на исполнение. Windows Scripting Host не требователен к памяти и прекрасно годится для автоматизации Windows.
Хост и скриптовые машины
Как ни хороши скриптовые языки, многого с ними не сотворишь. Они неспособны повлиять на что-либо за пределами родного скрипта. Эти языки не имеют прямых инструкций, позволяющих читать или записывать файлы на диске, выводить информацию в командную строку, изменять записи в Реестре Windows и так далее.
Чтобы справиться с такими задачами, можно воспользоваться дополнительными COM-объектами. Ряд таких объектов входит в поставку WSH, а один из них, WScript, даже уже имеет созданный экземпляр, и им можно пользоваться непосредственно, без предварительного создания. Остальные создаются с помощью синтаксиса, соответствующего конкретному языку или функции WScript.CreateObject.
Объекты WSH
В поставку Windows Scripting Host входят 4 объекта: Wscript, WshShell, WshNetwork, и FileSystemObject.
Каждый объект, естественно, имеет набор собственных методов и свойств.
Объект Wscript позволяет скриптам «познать самих себя». Вдобавок этот объект позволяет скриптам запускать приложения и управлять ими. Основные свойства и методы этого объекта перечислены в таблице 1.
Свойство | Описание |
---|---|
Arguments | Возвращает указатель на список аргументов командной строки |
FullName | Возвращает имя исполняемого файла хоста и полный путь к нему (например, C:\Windows\wscript.exe) |
Name | Выводит замечательную надпись Windows Scripting Host |
Path | Определяет каталог и путь, содержащие wscript.exe или cscript.exe |
ScriptFullName | Возвращает полный путь и имя исполняемого в данный момент скрипта |
ScriptName | То же, что и ScriptFullName, но без пути |
Version | Возвращает версию установленного Windows Scripting Host |
Метод | Описание |
CreateObject | Создает объект по его ProgID |
ConnectObject | Позволяет подключиться к событиям объекта. В качестве параметра принимает объект, к которому надо подключиться и префикс соответствующих событиям процедур, реализованных в скрипте |
DisconnectObject | Отключает от объекта, подключенного предыдущим методом |
Echo | Выводит текстовую строку (в cscript — в StdOut, в Wscript — в виде диалогового окна. |
GetObject | Позволяет получить указатель на объект из файла или объекта, указанного в параметре strProgID. |
Quit | Завершает скрипт |
Sleep | Переводит скрипт в неактивное состояние на время, указанное в миллисекундах |
Таблица 1. Методы и свойства объекта WScript
Объект WshShell позволяет скриптам устанавливать и конфигурировать другие приложения. Он также дает возможность общаться с пользователем, изменять Реестр и находить папки. Некоторые его свойства и методы перечислены в таблице 2.
Свойство | Описание |
---|---|
Environment | |
Метод | Описание |
Run | Запускает приложение. strCommand — исполняемая команда, параметр intWindowStyle позволяет управлять положением и поведением окон, а bWaitOnReturn позволяет указать объекту WshShell, надо ли ожидать окончания выполнения запущенного приложения. |
Popup | Ещё один способ вывести текст в окне |
CreateShortcut | Создает ярлыки файлов или URL |
RegRead | Возвращает значение ключа или записи реестра по его имени |
RegWrite | Создает новые ключ или запись Реестра или записывает новое значение существующих. |
RegDelete | Удаляет ключ или запись реестра |
LogEvent | Позволяет записать сообщение в event log Windows NT или W2K или файл WSH.log в случае Windows 9х |
ExpandEnvironmentStrings | Позволяет раскрыть строку, содержащую переменные среды |
SendKeys | Позволяет эмулировать клавиатурный ввод |
Таблица 2. Свойства и методы объекта WshShell
Объект WshNetwork используется при создании скриптов, модифицирующих конфигурацию сети. Это включает задачи типа подключения к сети, инсталляцию принтеров, назначение буквенных обозначений сетевым дискам и так далее. Основные свойства и методы WshNetwork перечислены в таблице 3.
Свойства | Описание |
---|---|
ComputerName | Возвращает имя компьютера |
UserDomain | Возвращает имя домена, в котором зарегистрирован пользователь |
UserName | Возвращает догадаетесь что! |
Метод | Описание |
MapNetworkDrive | Присваивает назначенную пользователем букву сетевому диску |
EnumNetworkDrives | Возвращает список подключенных сетевых дисков |
RemoveNetworkDrive | Отключает сетевой диск |
AddWindowsPrinterConnection | Позволяет установить новый принтер в Windows, то есть указать путь к принтеру и инициировать установку драйверов. |
AddPrinterConnection | Подключает сетевой принтер |
RemovePrinterConnection | Отключает сетевой принтер |
SetDefaultPrinter | Задает принтер по умолчанию |
EnumPrinterConnections | Возвращает список подключенных принтеров |
Таблица 3. Свойства и методы объекта WshNetwork
Последний объект, FileSystemObject, нужен для дисковых операций. Это включает чтение, запись, удаление файлов и создание каталогов.
FileSystemObject имеет методы BuildPath, CopyFile, CopyFolder, CreateFolder, CreateTextFile, DeleteFile, DeleteFolder, DriveExists, FileExists, FolderExists, GetAbsolutePathName, GetBaseName, GetDrive, GetDriveName, GetExtensionName, GetFile, GetFileName, GetFolder, GetParentFolderName, GetSpecialFolder, GetTempName, MoveFile, MoveFolder, OpenTextFile. Их названия в отдельном объяснении не нуждаются. Его единственное свойство Drives возвращает список дисков, доступных на данной машине, включая сетевые.
Что вам нужно для начала
Первое, что надо сделать — убедиться, что Windows Scripting Host у вас есть. В состав W2K он входит изначально. Если вы используете Windows 98 или Internet Information Server 4.0, или если вы устанавливали Option Pack для Windows NT 4 и для Windows 95, он у вас точно есть. В случае Windows 95 все усложняется, и Windows Scripting Host придется скачивать с сайта Microsoft (msdn.microsoft. com/ scripting). Напишите в командной строке wscript. Если появилось диалоговое окно с надписью, отличной от «File not found», все в порядке.
Microsoft не поставляет визуального редактора скриптов WSH. Но Notepad вполне годится.
Создание и запуск скриптов
По сравнению с различными программистскими изысками писать скрипты для Windows Scripting Host относительно просто. В Notepad вы пишете свой скрипт с использованием упомянутых объектов. Потом сохраняете файл с расширением .vbs для VBScript или .js для JScript.
Запуск скриптов — тоже несложная задача. Есть несколько способов. Самый простой — командная строка DOS и аналогичная версия Windows Scripting Host, CSCRIPT.ЕXE. Эта версия позволяет контролировать исполнение скрипта с помощью параметров командной строки.
Параметры хоста включают или отключают различные опции Windows Scripting Host и всегда предваряются двумя слэшами (//). Имя скрипта — это всегда имя файла, а параметры скрипта — параметры, передаваемые скрипту. Эти параметры всегда предваряются одним слэшем (/). Таблица 4 содержит некоторые параметры CSCRIPT.EXE.
Параметр | Описание |
---|---|
//B | Включает пакетный режим |
//T | Задает таймаут в секундах |
//I | Выключает пакетный режим (используется по умолчанию) |
//logo | |
//nologo | Выключает эту гордую надпись. |
//H:Cscript or Wscript | Делает CSCRIPT.EXE или WSCRIPT.EXE хостом по умолчанию, т.е. ассоциирует их с расширениями скриптов. |
//S | Сохраняет установки командной строки для текущего пользователя |
Таблица 4. Параметры командной строки CSCRIPT.EXE
Если вы не желаете видеть окошек с кнопкой ОК, используйте cscript.exe, а для вывода сообщений пользуйтесь методом WScript.Echo.
Для запуска скриптов с помощью wscript.exe имеются три пути.
Один из них — просто дважды щелкнуть по файлу или иконке. Другой — выбрать Выполнить. из меню Пуск и написать полное имя файла в текстовом поле Открыть. Наконец, можно запустить сам WSCRIPT.EXE из того же Выполнить. добавив к нему имя скрипта и любой из возможных параметров.
Пример скрипта
Попробуем написать какой-нибудь скрипт на VBScript. Конкретный пример, приведенный в Листинге 1, предоставлен Microsoft и может быть получен (как и несколько других) с их WWW-сайта: msdn.microsoft.com/scripting/windowshost/download/default.htm.
Листинг 1
Этот скрипт создает на рабочем столе ярлык для Notepad. Замечу, что сейчас в наши задачи не входит обучение пользователя программированию на VB или Java. Тем не менее, этот пример даст вам представление о том, что Windows Scripting Host может делать при наличии некоторых базовых навыков программирования.
Теперь пора перейти к более существенным применениям WSH. Наверное, больше всего WSH пригодится администраторам, осатаневшим от регулярного повторения одних и тех же действий. Администраторы Windows NT не располагали возможностями UNIX-администраторов, использовавших скрипты испокон веков. С появлением WSH ситуация изменилась, тем более, что WSH позволяет воспользоваться внешними по отношению к скриптовым языкам технологиям, таким, как Windows Management Instrumentation (WMI) и Active Directory Services Interface (ADSI).
WMI и ADSI мы будем использовать, я предполагаю, что у вас есть по крайней мере общее понимание этих технологий. Больше информации о них вы можете получить по адресам http://msdn.microsoft.com/developer/sdk/wmisdk/default.asp и http://www.microsoft.com//adsi/
В этих примерах предполагается, что вы используете W2K, для других платформ, вам, вероятно, придется установить WMI и ADSI.
Использование WSH и WMI для создания Logon-скриптов
Как вы знаете, такие скрипты подразумевают запуск в момент старта. В Листинге 2 приведен загрузочный скрипт, который определяет тип входящего в систему пользователя и выполняет задачи, основываясь на этой информации.
Листинг 2
Первое, скрипт создает некоторые общие объекты которые вам придется использовать, например, объекты WScript.Network и WScript.Shell. Дальше он использует эти объекты для определения имени пользователя и доменной информации. Наконец, используя ADSI скрипт возвращает информацию содержащую группу пользователя. Эта информация используется для определения подходящей подпрограммы, вызываемой для каждой из пользовательских групп. Это выполняет оператор Select Case.
Загрузочный скрипт для пользователей создаваемой нами группы Windows NT (под именем YourNewGroup) использует сетевые возможности WSH. Он проверяет, используется ли буква Z. Если она свободна, диском Z назначается \\yourserver\NETLOGON используя формат \\server\share.
Чтобы объяснить, как работает загрузочный скрипт, некоторые подпрограммы и функции вынесены в текст статьи. Можете просто вернуть их на место в блок