Как запустить сервер сценариев windows script host

Обновлено: 07.07.2024

В двух предыдущих лекциях был рассмотрен язык командных файлов (язык командной оболочки), который в качестве инструмента для автоматизации работы поддерживается во всех версиях Windows . Однако с помощью командного интерпретатора cmd.exe трудно написать какую-либо сложную программу- сценарий ( script ): отсутствует полноценная интерактивность , нельзя напрямую работать с рабочим столом Windows и системным реестром и т. д.

Для исправления этой ситуации компанией Microsoft был разработан сервер сценариев Windows Script Host (WSH), с помощью которого можно выполнять сценарии, написанные, в принципе, на любом языке (при условии, что для этого языка установлен соответствующий модуль ( scripting engine ), поддерживающий технологию ActiveX Scripting). В качестве стандартных языков поддерживаются Visual Basic Script Edition (VBScript) и JScript.

Вообще говоря, принцип работы сценариев, поддерживаемых WSH, состоит в использовании объектов ActiveX, поэтому вначале мы очень кратко опишем возможности самой технологии ActiveX компании Microsoft.

Возможности технологии ActiveX

Напомним, что в Windows с самого начала для обеспечения обмена данными между приложениями была разработана технология связывания и внедрения объектов (Object Linking and Embedding, OLE). Вначале технология OLE использовалась для создания составных документов, а затем для решения более общей задачи — предоставления приложениями друг другу собственных функций (служб) и правильного использования этих функций. Технология, позволяющая одному приложению (клиенту автоматизации) вызывать функции другого приложения (сервера автоматизации) была названа OLE Automation . В основе OLE и OLE Automation лежит разработанная Microsoft базовая "компонентная" технология Component Object Model (COM). В общих словах, компонентное программное обеспечение — это способ разработки программ, при котором используются технологии создания программных модулей, подобные технологиям, применяемым для разработки аппаратных средств. Сложные элементные схемы собираются из стандартизированных микросхем, которые имеют четко определенные документированные функции. Разработчик может эффективно пользоваться такими микросхемами, не задумываясь об их внутренней структуре. В программных компонентах, написанных на каком-либо языке программирования, детали реализации используемых алгоритмов также скрыты внутри компонента (объекта), а на поверхности находятся общедоступные интерфейсы, которыми могут пользоваться и другие приложения, написанные на том же или другом языке.

В настоящее время термин OLE используется только по историческим причинам. Вместо него Microsoft с 1996 года использует новый термин — ActiveX, первоначально обозначавший WWW (World Wide Web) компоненты (объекты), созданные на базе технологии COM.

Технология ActiveX длительное время являлась ключевой в продуктах Microsoft. Наиболее полное воплощение она нашла в программах Microsoft Office, Internet Explorer, Internet Information Service (IIS). В эти продукты для управления соответствующими объектами автоматизации были встроены интерпретаторы специальных языков сценариев: VBScript (используется в Microsoft Office, Internet Explorer, IIS) и JScript (используется в Internet Explorer, IIS). Однако непосредственно в операционной системе, вне этих продуктов, выполнять сценарии, написанные на VBScript или JScript, было нельзя.

Сервер сценариев WSH является мощным инструментом, предоставляющим единый интерфейс (объектную модель) для специализированных языков (VBScript, JScript, PerlScript, REXX , TCL, Python и т. п.), которые, в свою очередь, позволяют использовать любые внешние объекты ActiveX. С помощью WSH сценарии могут быть выполнены непосредственно в операционной системе Windows, без встраивания в HTML-страницы.

Назначение и основные свойства WSH

WSH предъявляет минимальные требования к объему оперативной памяти, и является очень удобным инструментом для автоматизации повседневных задач пользователей и администраторов операционной системы Windows. Используя сценарии WSH, можно непосредственно работать с файловой системой компьютера, а также управлять работой других приложений (серверов автоматизации). При этом возможности сценариев ограничены только средствами, которые предоставляют доступные серверы автоматизации.

Перечислим только наиболее очевидные задачи, для автоматизации которых прекрасно подходят сценарии WSH.

  • Организация резервного копирования на сетевой сервер файлов с локальной машины, которые отбираются по какому-либо критерию.
  • Быстрое изменение конфигурации рабочего стола Windows в зависимости от задач, выполняемых пользователем.
  • Автоматический запуск программ Microsoft Office, создание там сложных составных документов, распечатка этих документов и закрытие приложений.
  • Управление работой приложений, не являющихся серверами автоматизации, с помощью посылки в эти приложения нажатий клавиш.
  • Подключение и отключение сетевых ресурсов (дисков и принтеров).
  • Создание сложных сценариев регистрации для пользователей.
  • Выполнение задач администрирования локальной сети (например, добавление или удаление пользователей).

Создание и запуск простейших сценариев WSH

Простейший WSH-сценарий, написанный на языке JScript или VBScript — это обычный текстовый файл с расширением js или vbs соответственно, создать его можно в любом текстовом редакторе, способном сохранять документы в формате "Только текст".

Размер сценария может изменяться от одной до тысяч строк, предельный размер ограничивается лишь максимальным размером файла в соответствующей файловой системе.

В качестве первого примера создадим JScript-сценарий, выводящий на экран диалоговое окно с надписью "Привет!". Для этого достаточно c помощью, например, стандартного Блокнота Windows (notepad.exe) создать файл First.js, содержащий всего одну строку:

Тот же самый сценарий на языке VBScript, естественно, отличается синтаксисом и выглядит следующим образом:

Несмотря на то, что для работы этих двух сценариев достаточно всего одной строки, желательно сразу приучить себя к добавлению в начало файла информации о находящемся в нем сценарии: имя файла, используемый язык, краткое описание выполняемых действий. На языке JScript такая информация, оформленная в виде комментариев, может выглядеть следующим образом:

На языке VBScript то же самое выглядит следующим образом:

Для запуска сценариев WSH существует несколько способов.

Запуск сценария из командной строки в консольном режиме

Можно выполнить сценарий из командной строки с помощью консольной версии WSH cscript.exe. Например, чтобы запустить сценарий, записанный в файле C:\Script\First.js, нужно загрузить командное окно и выполнить в нем команду

В результате выполнения этого сценария в командное окно выведется строка "Привет!" (рис. 4.1)

Результат выполнения First.js в консольном режиме (cscript.exe)


увеличить изображение
Рис. 4.1. Результат выполнения First.js в консольном режиме (cscript.exe)
Запуск сценария из командной строки в графическом режиме

Сценарий можно выполнить из командной строки с помощью (оконной) графической версии WSH wscript.exe. Для нашего примера в этом случае нужно выполнить команду

Тогда в результате выполнения сценария на экране появится нужное нам диалоговое окно (рис. 4.2).

Результат выполнения First.js в графическом режиме (wscript.exe)


увеличить изображение
Рис. 4.2. Результат выполнения First.js в графическом режиме (wscript.exe)

Таким образом, мы видим, что при запуске сценария в консольном режиме, вывод текстовой информации происходит в стандартный выходной поток (на экран), при запуске в графическом режиме — в диалоговое окно.

Здесь мы обсудим некоторые преимущества 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 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.

Таблица 2. Свойства и методы объекта WshShell

Объект WshNetwork используется при создании скриптов, модифицирующих конфигурацию сети. Это включает задачи типа подключения к сети, инсталляцию принтеров, назначение буквенных обозначений сетевым дискам и так далее. Основные свойства и методы WshNetwork перечислены в таблице 3.

Таблица 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.

Включает гордую надпись (увы, используется по умолчанию)

Таблица 4. Параметры командной строки CSCRIPT.EXE

Для запуска скриптов с помощью wscript.exe имеются три пути.

Один из них - просто дважды щелкнуть по файлу или иконке. Другой - выбрать Выполнить. из меню Пуск и написать полное имя файла в текстовом поле Открыть. Наконец, можно запустить сам WSCRIPT.EXE из того же Выполнить. добавив к нему имя скрипта и любой из возможных параметров.

Листинг 1

Этот скрипт создает на рабочем столе ярлык для Notepad. Замечу, что сейчас в наши задачи не входит обучение пользователя программированию на VB или Java. Тем не менее, этот пример даст вам представление о том, что Windows Scripting Host может делать при наличии некоторых базовых навыков программирования.

Теперь пора перейти к более существенным применениям WSH. Наверное, больше всего WSH пригодится администраторам, осатаневшим от регулярного повторения одних и тех же действий. Администраторы Windows NT не располагали возможностями UNIX-администраторов, использовавших скрипты испокон веков. С появлением WSH ситуация изменилась, тем более, что WSH позволяет воспользоваться внешними по отношению к скриптовым языкам технологиям, таким, как Windows Management Instrumentation (WMI) и Active Directory Services Interface (ADSI).

В этих примерах предполагается, что вы используете W2K, для других платформ, вам, вероятно, придется установить WMI и ADSI.

Как вы знаете, такие скрипты подразумевают запуск в момент старта. В Листинге 2 приведен загрузочный скрипт, который определяет тип входящего в систему пользователя и выполняет задачи, основываясь на этой информации.

Листинг 2

Загрузочный скрипт для пользователей создаваемой нами группы Windows NT (под именем YourNewGroup) использует сетевые возможности WSH. Он проверяет, используется ли буква Z. Если она свободна, диском Z назначается \\yourserver\NETLOGON используя формат \\server\share.

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

Функция CheckNetworkMapping перечисляет различные буквы дисков чтобы определить, используется ли данная буква (см. Листинг 3). Она возвращает true или false на основании доступности данной буквы. В случае true вызывается подпрограмма MapNetwork для выполнения отображения. Эта подпрограмма использует метод MapNetworkDrive объекта wshNetwork для присвоения сетевому ресурсу соответствующей буквы. Более полную информацию о объекте wshNetwork можно получить из таблицы 3.

Листинг 3

Администраторы могут захотеть получить более детальную информацию, чем описание сетевых ресурсов и пользовательской среды. Им может потребоваться информация о компьютере, например, переменные среды, конфигурация компьютера, аппаратные устройства и так далее. Используя только объектную модель WSH следующий код покажет вам как вывести некую информацию о среде и реестре вашего компьютера.

Этот скрипт приведен чисто для примера - легкомысленно было бы хранить пароль администратора в открытом виде.

Что же еще можно сделать с помощью объектов, поставляемых вместе с WSH? Например, вы можете получить некую информацию о вашем компьютере. Это можно сделать с помощью метод ReturnENV. Сперва в этом методе потребуется подключить wshProcEnv к рабочей среде. Перед этим нужно создать объект wshShell (см. скрипт ниже). Как только вы подключились к окружению процесса, вы можете вернуть данные наподобие NUMBER_OF_PROCESSORS или PATH конфигурации данного компьютера. Здесь несколько примеров того, что вы можете извлечь из окружения процесса.

Заметьте, что этот скрипт полностью работоспособен только в среде NT (или W2K). В WindowsК9x будут доступны только PATH и WINDIR.

Вы, несомненно, знаете, что неумелыми, а тем более умелыми действиями в реестре можно быстро и бесповоротно угробить любую ОС от Microsoft. Для автоматизации этого процесса WSH предоставляет простой способ управления реестром. Методами RegRead, RegWrite и RegDelete вы можете сделать все, что заблагорассудится. Все, что требуется - указать верный ключ для чтения, записи или удаления.

Попробуем для примера настроить proxy-сервер. Получить текущую информацию, хранящуюся в реестре по адресу HKCU\Software\Microsoft\ Windows\CurrentVersion\Internet Settings\ProxyServer можно с помощью метода RegRead. Затем, используя RegWrite, перепишем это значение собственным, именем какого-то вашего proxy-сервера, MYPROXY:80. Наконец, убедимся, что записали верную информацию, для чего снова считаем значение с помощью RegRead.

С помощью WMI вы можете собрать массу интересных сведений. Функция GetIPAddress использует WMI для определения IP-адреса машины. Здесь я не буду вдаваться в детали WMI, но, в основном, команда GetObject берет объект управления WMI. Этот объект содержит метод ExecQuery, который берет текстовый аргумент, описывающий IP-адрес и возвращает набор всех IP-адресов машины.

GetRAM очень похож на GetIPAddress за исключением того, что запрашиваемые строки различны. Как и в предыдущем случае, в связанном сервисном объекте WMI работает ExecQuery. Листинг 4 показывает реализацию GetIPAddress и GetRAM.

Листинг 4

Чтобы завершить скрипт, сохраните код в файл logon.wsf (или другой, как хотите). Его следует поместить в \\server\NETLOGON. Это каталог, который Windows NT будет использовать в поисках файлов типа загрузочных скриптов. Заметьте, что не-W2K-серверы могут не исполнять иных файлов, кроме командных и ВАТ-файлов. В этом случае вам придется написать простой logon.bat, который вызывает cscript.exe.

Возможно, будет мудро заменить две функции WMI из Листинга 4 на Windows Script Components.

Active Directory работает под Windows 2000. Но клиентские приложения, в нашем случае - скрипты, могут быть запущены и из-под Windows 95, Windows 98 или Windows NT 4.0. Для всех этих ОС существуют клиентские компоненты, которые, как и важную дополнительную информацию, можно получить с WWW-сайта MSDN (см. адрес выше).

Теперь, когда у вас есть загрузочный скрипт, осталось понять, зачем он вам нужен? Представьте, что вам нужно создать 5000 учетных записей пользователей вашей компании, причем, как обычно, вчера! Нет проблем! Сейчас мы покажем, как создавать группы пользователей и учетные записи пользователей Windows NT, и как вносить нужных пользователей в нужные группы.

Если посмотреть на имена пользователей и группы вашего NT-сервера, легко заметить, что имеется несколько предварительно созданных групп, например, Administrators и Domain Users. Создать собственную группу на сервере или в домене несложно. Все, что требуется - указать Windows NT-компьютер, на котором вы собираетесь создавать группу и имя группы. В коде ниже демонстрируется пример функции CreateGroup, создающей такую группу. Чтобы получить ссылку на объект, с помощью которого можно управлять Active Directory, следует воспользоваться функцией GetObject. Воспользовавшись объектом, полученным от GetObject, можно добавить группу с нужным вам именем и ее описание. Важная строка кода - SetInfo, сохраняющая информацию на сервере:

Если вы хотите создать группу в домене, а не на сервере, надо заменить ServerName на DomainName. Следует также привязываться не к серверному, а к доменному объекту.

Теперь, когда у вас есть собственная группа, давайте заведем несколько пользователей. Код на самом деле очень похож на код, создающий группу. Как и прежде, вам следует получить ссылку на серверный или доменный объект с помощью GetObject. Затем в коде создается пользователь и вводится некоторая информация, такую, как полное имя и пароль (пользователи могут изменить их при первом входе в систему или позже). Код в Листинге 5 создает трех пользователей и задает их пароли, полные имена и свойства загрузочного скрипта. По умолчанию Windows будет искать загрузочный скрипт в \\server\NETLOGON.

Листинг 5

Теперь вы готовы ввести пользователей в группы Windows NT. Хохмы ради добавим двух пользователей в свежесозданную группу, а одного - в группу администраторов.

Вывод

Windows Scripting Host - хорошая замена уходящим в прошлое BAT-файлам. Он уже имеет поддержку множества сторонних разработчиков, создающих новые скрипт-машины, хосты и т.д. С небольшим навыком программирования вы сможете писать собственные скрипты для автоматизации функций Windows. Если вы не сможете или не захотите писать нужный скрипт самостоятельно, почти наверняка такой найдется в Сети. Все это, поверьте, сделает вашу жизнь проще!

Это только верхушка айсберга - с помощью WSH, WMI и ADSI можно сделать куда больше. Windows Script Host позволяет писать независимые от языка скрипты с использованием его собственной объектной модели или какой-нибудь взятой взаймы. Так что будьте созидательны.

Преимущество в том, что вы сможете инкапсулировать всю эту функциональность в аккуратный COM-компонент, модуль, готовый к повторному использованию в любом приложении.

Сервер сценариев 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 :


Как видим, имеется всего лишь возможность ограничить время выполнения сценариев и изменить режим отображения сведений о программе в консольном режиме.

Для получения справки по работе с программой, можно воспользоваться командой:


Формат командной строки 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

Используемый по умолчанию сервер сценариев: "cscript.exe".

Стандартно, сервером сценариев по умолчанию, является wscript.exe .

wscript //Job:main job1.wsf - выполнить задачу с идентификатором main , параметры которой описываются содержимым файла job1.wsf . Файл с параметрами задачи представляет собой XML-файл, обрабатываемый сервером сценариев в соответствии с указанными XML - элементами. Обычно, файлы .wsf используются в тех случаях, когда необходимо в рамках одного сценария выполнить фрагменты исходного кода, написанные на разных языках программирования. Например:

<job >
<script language="VBScript">
Фрагмент на языке VBScript
</script>
<script language="JScript">
Фрагмент на языке JScript
</script>
</job>

В частности, использование задач .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 с помощью wscript.exe или cscript.exe возникает ошибка Доступ к Windows Script Host отключен на этом компьютере может всплывающее окно Однако в системах, подверженных вредоносному ПО, ошибка появляется через определенные промежутки времени, без любой вызов скрипта пользователем.

Итак, ключевые вопросы:

Этот пост отвечает на эти вопросы.

содержание

[Исправлено] Windows Script Host Access отключен на этом компьютере

Сначала запустите тщательное сканирование вредоносных программ в вашей системе. До тех пор, пока не будут удалены все следы вредоносного программного обеспечения, не снимайте ограничение хоста скрипта. Ограничение только защищает вашу систему.

Выясните, какой сценарий пытается выполнить, что вызывает ошибку?

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

Используйте диспетчер задач, чтобы найти имя файла скрипта

Вы можете использовать простой инструмент, такой как диспетчер задач, чтобы узнать имя исполняемого файла скрипта. Используйте эти шаги:

  1. Пусть окно ошибки скрипта будет на экране. Пока не отклоняйте это.
  2. Отключите ваш компьютер от интернета.
  3. Откройте диспетчер задач (Ctrl + Shift + Esc) и перейдите на вкладку Подробности.
  4. Щелкните правой кнопкой мыши заголовок столбца, выберите «Выбрать столбцы».

Диспетчер задач Показать командную строку

СВЯЗАННЫЙ: Ознакомьтесь с информацией о настройке диспетчера задач для отображения полного пути запущенных процессов для получения дополнительной информации и снимков экрана.

Доступ к хосту скрипта Windows на этом компьютере отключен

Используйте расширенные средства устранения неполадок

Кроме того, вы можете использовать Autoruns, еще один отличный инструмент от Microsoft Windows SysInternals, чтобы найти точку запуска при запуске (Startup или Task Scheduler), используемую этим вредоносным скриптом.

Начните свое расследование оттуда. Если вы опытный пользователь, вы можете даже отредактировать файл скрипта с помощью Блокнота и посмотреть, какой код выполняется. Ransomware обычно использует файлы .vbs, .js, .wsh или .hta для загрузки полезных данных крипто-вымогателей с удаленного сервера, запуска их в локальной системе и шифрования данных или их полного удаления.

Прежде всего, если кто-то может удалить вредоносный скрипт в вашем каталоге TEMP и запустить его, то в вашей системе существует действительно серьезная уязвимость. Защита от вирусов и вредоносных программ не всегда помогает, если ваша система уязвима для эксплойтов. Вы должны убедиться, что ваша система обновлена ​​с точки зрения исправлений Центра обновления Windows, а также обновлений для программ, которые вы используете в своей системе.

Выполните тщательную проверку с использованием известного средства защиты от вредоносных программ, такого как Malwarebytes.

Как мне включить доступ к Windows Script Host?

Если ваша система не подключена к домену, выполните действия по устранению ошибки «Доступ к хосту сценариев Windows отключен». Эта процедура включит запуск сценариев Windows (.vbs или .js) в вашей системе.

Разрешить доступ к Windows Script Host с помощью редактора реестра

  1. Нажмите WinKey + R, чтобы вызвать диалог Run.
  2. Тип regedit.exe
  3. Удалить значение с именем Включено в следующих ключах:

Доступ к Windows Script Host отключен на этом компьютере


Если ключ не существует, проигнорируйте и проверьте следующий ключ.

Разрешить доступ к Windows Script Host с помощью командной строки

Чтобы сделать это с помощью командной строки, выполните эти команды из командной строки с повышенными правами:

С снятием ограничений на хост скриптов Windows вы должны запускать скрипты только из надежных источников, и если вы уверены, что они безопасны для запуска.

Читайте также: