WSH — это сценарий (скрипт) позволяющий автоматизировать повседневные процессы в работе. Предявляемые требования к оперативной памяти и соответственно выполнения минимальны. Язык (скрипт) является очень удобным инструментом для автоматизации повседневных задач пользователей и администраторов операционной системы Windows. Используя сценарии WSH, можно непосредственно работать с файловой системой компьютера, а также управлять работой других приложений (серверов автоматизации). WSH это простые текстовые файлы, написанные при помощи блокнота или других текстовых редакторов. Абревиатура WSH подразумевает использование в скрипте одного или нескольких языков: Rexx, BASIC, Perl, Ruby, Tcl, PHP, JavaScript, Delphi, Python и т.д. Это как бы оболочка для языка.
Что такое Windows Script Host
Файлы WSH предполагают написание на скриптовых языках, куда следует отнести JScript, VBScript, Active Perl, Python и некоторые другие. Они позволяют осуществлять определенную последовательность действий на устройстве. Существует несколько преимуществ перед bat-файлами. Наиболее важным достоинством можно отметить увеличенный спектр действий:
- Создание ярлыков для приложений
- Отключение устройства
- Внесение корректировок в реестр операционной системы
- Работа с сетью
- Переключение пользователей и получение информации о них
- Внесение изменений в переменные окружения
- Вывод на экран различного типа информационных сообщений
- Организация резервного копирования на сетевой сервер
- Быстрое изменение конфигурации рабочего стола Windows
- Автоматический запуск программ Microsoft Office
- Cоздание там сложных составных документов, распечатка этих документов
- Подключение и отключение сетевых ресурсов (дисков и принтеров).
- Создание сложных сценариев регистрации для пользователей.
- Выполнение задач администрирования локальной сети (например, добавление или удаление пользователей).
Выше перечислена только часть из возможных действий. Полный список отличается своим разнообразием и позволяет писать сценарии практически для любой ситуации.
WSH особенно полезен для администраторов. Это связывается с особенностями внесения изменений в реестр.
Так как Windows Script Host (WSH) не требует установки и входит в состав практически всех версий Windows, то можно сразу приступать к программированию. У пользователя есть выбор, писать программный код на языке VBScript (файлы с расширением .vbs) или JScript (файлы с расширением .js).
Хост и скриптовые машины
Как ни хороши скриптовые языки, многого с ними не сотворишь. Они неспособны повлиять на что-либо за пределами родного скрипта. Эти языки не имеют прямых инструкций, позволяющих читать или записывать файлы на диске, выводить информацию в командную строку, изменять записи в Реестре 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 |
Возвращает объект, который позволяет получить значения переменных среды, например
|
||
| SpecialFolders |
Возвращает полный путь к специальным папкам типа меню Пуск. Вот список доступных папок: AllUsersDesktop, AllUsersStartMenu, AllUsersPrograms, AllUsersStartup, Desktop, Favorites, Fonts, MyDocuments, NetHood, PrintHood, Programs, Recent, SendTo, StartMenu, Startup, Templates. |
||
| Метод | Описание | ||
| 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 относительно просто. В 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 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 |
' Этот пример показывает, как использовать объект WSHShell ' для создания ярлыка на Рабочем столе. L_Welcome_MsgBox_Message_Text = _ "Этот скрипт создаст ярлык для Notepad на Рабочем столе." L_Welcome_MsgBox_Title_Text = "Пример Windows Scripting Host " Call Welcome() ' *************************************************************** ' * ' * Методы, связанные с ярлыками. ' * Dim WSHShell Set WSHShell = WScript.CreateObject("WScript.Shell") Dim MyShortcut, MyDesktop, DesktopPath ' Читаем путь к Рабочему столу DesktopPath = WSHShell.SpecialFolders("Desktop") ' Создаем ярлык на Рабочем столе Set MyShortcut = WSHShell.CreateShortcut(DesktopPath & _ "\Shortcut to notepad.lnk") ' Задаем свойства объекта-ярлыка и сохраняем их MyShortcut.TargetPath = WSHShell.ExpandEnvironmentStrings _ ("%windir%\notepad.exe") MyShortcut.WorkingDirectory = WSHShell.ExpandEnvironmentStrings _ ("%windir%") MyShortcut.WindowStyle = 4 MyShortcut.IconLocation = WSHShell.ExpandEnvironmentStrings _ ("%windir%\notepad.exe, 0") MyShortcut.Save WScript.Echo "Теперь на Рабочем столе есть ярлык для Notepad." ' **************************************************************** ' * ' * Добро пожаловать ' * Sub Welcome() Dim intDoIt intDoIt = MsgBox(L_Welcome_MsgBox_Message_Text, _ vbOKCancel + vbInformation, _ L_Welcome_MsgBox_Title_Text ) If intDoIt = vbCancel Then ;WScript.Quit End If End Sub |
Этот скрипт создает на рабочем столе ярлык для Notepad. Замечу, что сейчас в наши задачи не входит обучение пользователя программированию на VB или Java. Тем не менее, этот пример даст вам представление о том, что Windows Scripting Host может делать при наличии некоторых базовых навыков программирования.