Скрипты операционной системы windows

Windows Script Host (WSH)

Знакомство с WSH

В этой статье пойдет разговор о возможностях Windows Script Host в Windows. Естественно, статья не способна заменить всю документацию, но мы попытаемся охватить основные моменты и дать несколько полезных и употребительных примеров.

Что такое Windows Script Host?

Для чего же все-таки нужен WSH? WSH позволяет работать с файловой системой, реестром, сетевыми соединениями (диски, принтеры), окружением и др. С помощью wsh-скриптов можно управлять запуском программ, посылать сигналы другим процессам, удаленно администрировать систему, работать с сетевым принтером, управлять входом в систему (login-скрипты) и многое другое. Скрипты для Windows Script Host могут быть не только отдельными программами, но и встраиваться в HTML-страницы, и использоваться в Active Server Pages (ASP), JScript, VBScript или PerlScript

Где взять Windows Script Host?

Windows Script Host (WSH) встроена в Microsoft Windows 98/Me/2000. Если вы до сих пор пользуетесь Windows 95,то можете загрузить Windows Script Host с сайта Microsoft. Кстати, последняя версия имеет номер 5.6, поэтому пользователи Windows 98/Me/2000 также могут обновить свою версию с 1.0 или 2.0 до текущей, имеющей дополнительные возможности.

Первые шаги по программированию WSH

Скрипт WSH является обычным текстовым файлом с расширениями .js, vbs и подключаются с помощью ActiveXObject в JS- и VBS-скриптах (в т.ч. в HTML). Кроме этого, WSH-скрипты могут содержаться в «своих» файлах — *.wsh и *.wsf (wsh-файлы — это скрипты для старых версий WSH). Эти файлы представляют собой специальные XML-конструкции. В одном файле можно использовать все доступные скриптовые языки.

Создадим первый учебный скрипт в обычном блокноте.

Запустите блокнот. Напечатайте следующий текст:

Сохраните файл с расширением .js (вместо .txt). Пусть это будет Hello.js.
Запустите Проводник и щелкните на созданном файле.
WSHost запустит движок JScript и исполнит наш скрипт.
В результате наших действий появится сообщение «Здравствуй, мир!»

Итак, у вас получилось! Но действительные возможности WSH гораздо шире. Вы можете создавать полноценные программы, имеющие очень маленькие размеры файлов. Для примера могу посоветовать скачать две программы (Настроить вид папки 1.0 и Сохранить выделенный текст 1.0) с сайта http://winchanger.narod.ru. Эти программы полностью написаны на WSH. Обратите внимание, что даже инсталяция этих программ сделана на WSH.

Объектная модель WSH

Для того, чтобы воспользоваться всеми возможностями, которые представляет эта технология, нужно хорошенько разобраться в ее структуре. Windows Script Host состоит из 14 объектов. Самым главным объектом является объект WScript.

Рассмотрим основные объекты и их возможности WScript

  • Устанавливает или получает аргументы командной строки.
  • Определяет имя скриптового файла.
  • Определяет имя хоста для скрипта (wscript.exe или cscript.exe)
  • Определяет версию хоста
  • Создает, соединяется или отсоединяется от объектов COM
  • Программно останавливает выполнение скрипта
  • Выводит сообщения

WshArguments Получает доступ к аргументам командной строки WshNamed Получает доступ к именованным аргументам командной строки WshUnnamed Получает доступ к безымянным аргументам командной строки WshNetwork Работа с сетью WshController Для работы со скриптами удаленного управления WshRemote Удаленные скрипты WshRemote Error Информация об ошибках (для WshRemote) WshShell Работа с оболочкой Windows WshShortcut Создание ярлыков WshSpecialfolders Пути к специальным папкам Windows WshURLShortcut Создание интернет-ссылок WshEnvironment Доступ к коллекции переменных окружения WshScriptExec Работа со скриптами

Объект Wscript

Все объекты имеют свои свойства и методы. Не будем утомлять читателя перечислением всех свойств объектов. Приведем только свойства для Wscript

Свойство Описание
Arguments Возвращает указатель на список аргументов командной строки
FullName Возвращает имя исполняемого файла хоста и полный путь к нему (например, C:\Windows\wscript.exe)
Name Выводит замечательную надпись Windows Scripting Host
Path Определяет каталог и путь, содержащие wscript.exe или cscript.exe
ScriptFullName Возвращает полный путь и имя исполняемого в данный момент скрипта
ScriptName То же, что и ScriptFullName, но без пути
Version Возвращает версию установленного Windows Scripting Host
Приведем теперь пример с использованием VBScript

Листинг файла sample.vbs

Читайте также:  Команды windows восстановление систем

Возможности WSH

Пора перейти к конкретным примерам, которые могут пробудить ваш интерес к WSH

Drag-and-Drop в WSH

Как уже говорилось выше, WSH имеет богатые возможности для работы с файлами, реестром и так далее. Кроме того, WSH поддерживает Drag’n’Drop. С помощью объекта WScript.Arguments в своем скрипте вы получаете имена файлов, с которыми вам надо работать. Сохраните файл dragndrop.vbs (листинг ниже) на диске, откройте Проводник и теперь просто перетащите любые файлы на ваш скрипт, который покажет их имена (пути к ним).

Листинг файла dragndrop.vbs

Создание ярлыков WSH

Также просто создавать ярлыки. Рассмотрим пример создания ярлыка к калькулятору и поместим его в Автозагрузку.

Листинг файла createshortcut.vbs

Специальные папки

Здесь необходимо сказать несколько слов о специальных папках. В предыдущем примере мы использовали одну такую папку Автозагрузка. Но дело в том, что в английской версии Windows аналогичная папка носит имя Startup, и если вы укажете точный путь вроде C:\WINDOWS\Главное меню\Программы\Автозагрузка, то это сработает в русской версии Windows и нигде больше. Чтобы избежать этих проблем Microsoft создала список специалных папок.Чтобы получить доступ к какой-либо специальной папке можно воспользоваться свойством SpecialFolders объекта WshShell.

Листинг файла specfol.js

Работа WSH с реестром

Еще больше возможностей для реализации ваших фантазий предоставляет работа с реестром. Для этого используется объект Wscript.Shell с его методами RegRead, RegWrite, RegDelete.

Приведу пример создания записи в реестре, позволяющий менять заголовок в Internet Explorer

Листинг файла ie_title.vbs

Запуск других приложений

Объект WshShell позволяет запускать другие приложения. В следующем примере мы запускаем две копии Блокнота — новый экземпляр и с содержимым нашего скрипта

Работа WSH с файлами

Также легко можно копировать, переносить и удалять файлы и папки. Не представляет сложности и работа с просмотром содержимого файла и его редактирования. Освоив данные возможности, вы получаете возможность работать с файлами autoexec.bat и config.sys, проверять значения параметров в win.ini, вести логи работы пользователей

Для этого надо инициализировать объект файловой системы FSO, а затем воспользоваться одним из его методов для открытия файла:

Листинг для файла open.vbs

Итак, OpenTextFile открывает файл, если его нет, то создается новый файл. Из параметров, передаваемых методу, обязательным является только первый — имя файла. Остальные параметры можно не указывать. Вторым параметром устанавливается режим открытия файла. Возможные значения следующие:

  • 1 — файл открывается только для чтения
  • 2 — файл открывается для записи. Причем, все содержимое файла, которое было до этого, уничтожится
  • 8 — файл открывается для добавления данных. Все, что вы запишите, будет добавлено в конец файла. Довольно удобно для ведения различных логов

Третья переменная может принимать значение true или false. Она показывает, создавать ли новый файл, если его до этого не существовало. Если значение равно true, то новый файл будет создан.

Вот мы с вами и рассмотрели наиболее используемые возможности WSH. Надеюсь, данная технология заинтересовала вас и вы самостоятельно продолжите изучение документации.

Автоматизация работы с использованием 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 и так далее.

Читайте также:  Защитить файл паролем 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.

Возвращает объект, который позволяет получить значения переменных среды, например

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

Вот список доступных папок: AllUsersDesktop, AllUsersStartMenu, AllUsersPrograms, AllUsersStartup, Desktop, Favorites, Fonts, MyDocuments, NetHood, PrintHood, Programs, Recent, SendTo, StartMenu, Startup, Templates.

Свойство Описание
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», все в порядке.

Читайте также:  Windows с буферной памятью

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.

Чтобы объяснить, как работает загрузочный скрипт, некоторые подпрограммы и функции вынесены в текст статьи. Можете просто вернуть их на место в блок

Оцените статью