Сервер сценариев Windows
| Сервер сценариев Windows | |
|---|---|
| | |
| Тип | технология автоматизации |
| Разработчик | Microsoft |
| Операционная система | Microsoft Windows |
| Последняя версия | 5.812 |
| Лицензия | проприетарная, коммерческая |
| Сайт | docs.microsoft.com/en-us… |
Сервер сценариев Windows — технология автоматизации для операционных систем Microsoft Windows, предоставляющая возможности сценариев, схожие с пакетными файлами, но с более широким набором поддерживаемых функций. Ранее также назывался Windows Scripting Host. Впервые предоставлен для Windows 95 (после сборки 950a) на инсталляционных дисках как дополнительная установка через Панель управления, после чего стал стандартным компонентом Windows 98 (Build 1111) и следующих версий, а также Windows NT 4.0 (Build 1381) начиная с пакета обновления Service Pack 4. WSH также является средством автоматизации для Internet Explorer (начиная с версии 3.0); тогда же VBScript стал средством автоматизации в Microsoft Outlook 97[1]. Сервер сценариев Windows также доступен для Windows CE 3.0 и последующих (включая движки VBScript и JScript как дополнительные компоненты); существуют сторонние движки, такие как Rexx и другие интерпретации BASIC[2].
Технология не зависит от языка сценариев, так как использует различные движки Active Scripting. По умолчанию поддерживаются JScript (.js, .jse) и VBScript (.vbs, .vbe).
Пользователи могут устанавливать другие движки сценариев, например, PerlScript. Для языконезависимых сценариев применяется расширение файлов WSF (Windows Script File), которое позволяет объединять несколько сценариев и языков в одном файле.
Для WSH существуют движки для Rexx, ooRexx (до версии 4.0.0), BASIC, Perl, Ruby, Tcl, PHP, JavaScript, Delphi, Python, XSLT и других языков.
Сервер сценариев Windows по умолчанию устанавливается в Windows 98 и последующих версиях Windows, а также при установке Internet Explorer 5 и новее. Начиная с Windows 2000, WSH можно использовать для сценариев входа в систему.
Возможности
Сервер сценариев Windows используется для самых разных задач, включая сценарии входа, администрирование и автоматизацию рутинных операций. Microsoft описывает его как средство администрирования[3]. WSH предоставляет среду для выполнения сценариев: вызывает соответствующий движок и предоставляет набор доступных служб и объектов[3].
Сценарии могут запускаться в режиме графического интерфейса (WScript.exe), из командной строки (CScript.exe) или через COM-объект (wshom.ocx), что обеспечивает гибкость использования для интерактивных и автоматических сценариев[4]. Также WSH позволяет автоматизировать Windows Management Instrumentation.
Движки и объекты WSH доступны для анализа и автоматизации через просмотровщики объектов VBA, Visual Studio и других инструментов, включая отладчики скриптов (например, Microsoft Script Debugger) и редакторы.
WSH реализует объектную модель, доступную через интерфейсы COM[5]. Это позволяет использовать WSH для автоматизации любых программ Windows с поддержкой COM, а также для взаимодействия между прикладными программами с помощью различных языков сценариев и технологий доступа к данным (ODBC, SQL и др.).
Функциональность VBA в офисных приложениях (Microsoft Office, Apache OpenOffice, Corel WordPerfect Office и др.) независима от движков WSH, однако Outlook 97 использует VBScript в качестве языка макросов[6].
Сценарии на Python (через ActiveState PythonScript), а также на PerlScript, ooRexxScript, PHPScript, RubyScript, LuaScript, XLNT и других языках, могут автоматизировать широкий круг программ — в том числе эмуляторы терминала (SecureCRT, ZOC, Passport), FTP-клиенты (SecureFX), офисные продукты и др. Некоторые программы, такие как Paint Shop Pro и Passport, используют собственный встроенный интерпретатор Python или Rexx, не связанный с внешними движками WSH.
VBScript, JScript и некоторые сторонние движки поддерживают кодирование сценариев для защиты исходного кода от просмотра (например, .vbe, .jse).
Любой поддерживаемый движок WSH может использоваться для CGI-сценариев в серверных продуктах Windows. Большинство доступных движков (включая сторонние) поддерживают работу с сетевыми протоколами и файловой системой.
Существуют также схожие технологии, как WinWrap Basic, SaxBasic, и другие, предоставляющие макросы и автоматизацию для специализированных программ (например, Host Explorer). Автоматизировать приложения (базы данных, электронные таблицы, текстовые процессоры, эмуляторы терминала) можно практически на любом языке сценариев при наличии соответствующего движка.
В последних версиях оболочки Take Command и связанных инструментов командой «script» можно получить список установленных движков сценариев[7].
Примеры
Самый простой пример — сценарий на VBScript, использующий объект «WScript» для вывода сообщения с кнопкой OK:
Содержимое файла hello0.vbs:
WScript.Echo "Hello world"
WScript.Quit
Сценарии WSH можно также писать на JScript:
Содержимое файла hello1.js:
WSH.Echo("Hello world");
WSH.Quit();
Кроме того, код разных языков может быть объединён в одном WSF-файле:
Содержимое файла hello2.wsf:
<job>
<script language="VBScript">
MsgBox "hello world (from vb)"
</script>
<script language="JScript">
WSH.echo("hello world (from js)");
</script>
</job>
Безопасность
Через WSH возможно автоматизировать работу приложений Windows, однако это же позволяет создавать вредоносные программы и вирусы, использующие эти возможности, поэтому некоторые эксперты рекомендуют отключать службу сценариев в целях безопасности[8]. Антивирусные программы могут предоставлять средства управления запуском сценариев .vbs и других форматов.
Начиная с версии 5.6, сервер сценариев Windows позволяет программно подписывать сценарии с помощью объекта Scripting.Signer при наличии действительного сертификата. Для командной строки или пакетной обработки можно использовать утилиту signcode из Platform SDK[9].
С помощью Политик ограничения программ (Software Restriction Policies), появившихся в Windows XP, можно разрешать исполнение только тех сценариев, которые расположены в доверенных каталогах, имеют известную MD5-сумму или подписаны доверенным издателем, что повышает защищённость системы[6].
Доступные движки сценариев
Примечание: Все перечисленные ниже движки могут использоваться для CGI-программирования в Windows; скрипты для CGI-серверов могут иметь отличные расширения файлов (.cgi и др.). WSH поддерживает сценарии с несколькими языками в одном файле (.wsf), а также XML и расширенный HTML для сетевого программирования.
| Название движка | Реализуемый язык | Базовый язык | Расширения файлов | Наличие | Разработчик | Статус | Дата первого выпуска | Поддержка кодированных сценариев | Примечания |
|---|---|---|---|---|---|---|---|---|---|
| VBScript | Microsoft VBScript | Microsoft Visual Basic | .vbs | По умолчанию установлен | Microsoft | стандартная установка | 1999 | Да, .vbe | Стандартный движок сценариев Windows |
| JScript | Microsoft JScript | ECMAScript | .js | По умолчанию установлен | Microsoft | стандартная установка | 1999 | Да, .jse | Стандартный движок JavaScript |
| WinWrap Basic | WinWrap Basic | Basic | .wwb | В составе WWB | Polar Engineering | Стандартная функциональность WWB; Поддержка .NET и COM | 2004 | Да | |
| PerlScript | Perl | Perl 5 | .pls | В составе ActiveState Perl | ActiveState | открытое ПО | 1999 | Да (сообщалось) | |
| PScript | Perl | Perl 5, CGI | .p, .ps | В составе MKS Toolkit | MKS | проприетарное/коммерческое ПО | 2001 | ||
| XBScript | xBase Scripting Engine | xBase (Clipper) | .xbs, .prg | В составе XBScript | XBScript software | проприетарное/коммерческое ПО | |||
| LotusScript WSH | LotusScript | Microsoft Visual Basic (см. выше) | .nsf | Сторонняя загрузка | Service Desk Plus | бесплатное ПО | 2001 | ||
| RexxScript | Rexx | Rexx | .rxs, .rx, .rex | В составе некоторых реализаций Rexx | Различные | бесплатное ПО | 1998 | ||
| ooRexxScript | Open Object REXX | REXX | .rxs | В составе Open Object Rexx или стороннее ПО | Open Object Rexx team | открытое ПО | |||
| PythonScript | Python | Python | .pys | SourceForge и ActivePython | Pywin32 project | открытое ПО | |||
| TclScript | Tcl/Tk | Tcl/Tk | .tcls | SourceForge | ActiveState или сторонние | открытое ПО | |||
| ActivePHPScript | PHP | PHP | .phps | В составе PHP | PHP team | открытое ПО | |||
| PHPScript | PHP | PHP | .phps | В составе PHP | PHP team | открытое ПО | Ранняя версия ActivePHPScript | ||
| RubyScript | Ruby | Ruby | .rbs | В составе Ruby | Ruby team | открытое ПО | Да | ||
| XLNTScript | XLNT | DIGITAL Command Language (DCL) | .xcs | В составе XLNT | Advanced Systems Concepts, Inc. | проприетарное/коммерческое ПО | 1997 | Среда сценариев DCL для Windows | |
| LuaScript | Lua | Lua | .lua | В составе Lua | Lua organisation | открытое ПО | |||
| Object REXX engine | Object REXX | Rexx | .rex, .rxs | В составе IBM Object REXX | IBM | проприетарное/коммерческое ПО | 2002 | ||
| XML Engine | XML-разбор | Extended HTML, XML | .xml | В составе многих реализаций XML | Elf Data | неофициальная стандартная установка | 2000 | Также Macintosh | |
| Kixtart WSH Engine | Kixtart | KixTart, MS-DOS, Windows 95/NT shell | .kix | В составе KixStart | Microsoft Netherlands | Windows Resource Kits и другие ресурсы | 1996 | Можно скачать у Microsoft | |
| NullScript | NullScript | Null language | .ns | В составе NullScript | NullScript Organisation | Windows Resource Kits и другие ресурсы | 1999 | ||
| ForthScript | Forth | Forth | .fth, др. | В составе Forth | DMOZ | открытое ПО | |||
| Haskell Script | Haskell | Haskell | .hsk (предл.), др. | Сторонняя загрузка | открытое ПО | ||||
| XSLT WSH Engine | XSLT | XSLT | .xslt | Сторонняя загрузка | открытое ПО | ||||
| CobolScript WSH Engine | Cobol | Cobol | .cbl, .cob, .cb | Fujitsu Cobol 3 — бесплатно для образования | Фирма Fujitsu | проприетарное ПО | |||
| Delphi scripting engine | Object Pascal (Delphi) | Delphi, вариант Pascal | .dlp, .del, . | В некоторых дистрибутивах Delphi | проприетарное/коммерческое ПО | 2003 | |||
| DMDScript | DMDScript | D | .dmd | DMD, скачивание | бесплатное ПО (веб-версия) | 2014 | DMD | ||
| C# Script | C# | Microsoft C#.NET | .cs, .c# | Исходный код доступен | открытое ПО | 2013 | |||
| Small C Scripting Engine | C (K&R, ANSI) | C | .c | Различные источники, интернет | бесплатное ПО | 2009 | |||
| JavaScript WSH Engine | JavaScript/Java | Java и производные | .java, .j и др. | С многими реализациями JavaScript | Sun и др. | бесплатное ПО | |||
| Take Command WSH Engine | 4NT/Take Command | TCC — современная версия 4NT | .btm, .cmd, .bat и др. | JP Software | проприетарное ПО | 2015 | На ранней стадии развития | ||
| 92Script WSH Engine | TI-89/92+/Voyager 200, TI-Basic | Calculator TI-Basic | .92bs | Веб-/FTP-сайты проектов | Независимые разработчики | Экспериментальный, открытое ПО | 2014 | «возможно» | Бета Q4 2015, графика — позже |
| 48Script WSH Engine | HP-48, язык программирования калькулятора | HP 48 PL, Forth, Basic, Lisp | .48s | Веб-/FTP-сайты проектов | Независимые разработчики | экспериментальный | 2015 | в планах | Статус на 30.09.2015. Примеси Lisp, Basic, Fortran и др. |
| Fortran Script | Fortran | Fortran 77 | .for, .ftn, .f77, .f90, .f95 | Различные источники | Различные | Экспериментальный, академический, условно-бесплатный, коммерческий, открытое ПО | 2000 | ||
| PascalScript | Object Pascal | Pascal 7 | .pas, .ops | Object Pascal | RemObjects | бесплатное ПО | 2001 | Можно использовать напрямую в Delphi | |
| Lisp WSH Engine | Lisp | Lisp | .lisp, .lsp | Различные реализации Lisp | AutoLisp и др. | Бесплатное ПО или условно-бесплатное ПО | |||
| BESEN | ECMA-JavaScript | Java и производные | .bes, .bsn | SourceForge | BESEN Organisation | открытое ПО | 2011 | ||
| ECMAScript WSH engines | Java и производные | Различные | Различные | Различные | Различные | Экспериментальные, бесплатные, коммерческие | 2005 | Существует множество реализаций ECMAScript с поддержкой WSH | |
| CFXScript WSH Engine | Язык калькуляторов Casio CFX-9850 и fx | Casio Calculator PL (CFW) | .cfxb | Веб-/FTP-сайты проектов | Независимые разработчики | экспериментальный | 2015 | в планах[10] | Поддержка Basic, Forth, Fortran и др. |
| SharpCalcScript WSH Engine | Язык программирования калькуляторов Sharp | Sharp S-Basic (NeusSFortran) | .scsb | Веб-/FTP-сайты проектов | Независимые разработчики | экспериментальный | 2015 | в планах | Включает S-Basic для карманных ПК Sharp |
Созданы также проекты движков для других языков: LotusScript, SaxBasic, BasicScript, KiXtart, awk, bash, csh и других оболочек Unix, 4NT, cmd.exe, Windows PowerShell, DCL, C, C++, Fortran и других[11]. Язык XLNT основан на DCL и может использоваться в виде движка WSH (*.xcs), консольного интерпретатора (*.xlnt) и серверного CGI движка (*.xgi)[12].
Наиболее часто используемые движки для автоматизации и CGI-скриптов — VBScript, JScript, PythonScript, PerlScript, ActivePHPScript, ooRexxScript. В среде Windows также часто применяются оболочки cmd.exe, 4NT, ksh и языки с поддержкой обработки строк и сетевых протоколов.
История версий
| Версия Windows | Включённая версия WSH | Последняя распространяемая версия |
|---|---|---|
| Windows 95 | Нет (отдельная поставка) | 5.6 |
| Windows NT 4.0 | Нет (отдельная поставка) | 5.6 |
| Windows CE 3.0 | 1.0 (доп. установка) | 2.0 |
| Windows 98 | 1.0 | 5.6 |
| Windows 98 Second Edition | 1.0 | 5.6 |
| Windows 2000 | 2.0 (также WSH 5.1) | 5.7 |
| Windows 2000 SP3, SP4, SP5 | 5.6 | 5.7 |
| Windows Me | 2.0 (также WSH 5.1) | 5.6 |
| Windows XP | 5.6 | 5.7 |
| Windows XP SP3 | 5.7 | Не применимо |
| Windows Server 2003 | 5.6 | 5.7 |
| Windows Vista | 5.7 | Не применимо |
| Windows Server 2008 | 5.7 | Не применимо |
| Windows 7 | 5.8 | Не применимо |
| Windows Server 2008 R2 | 5.8 | Не применимо |
| Windows 8 | 5.8 | Не применимо |
| Windows Server 2012 | 5.8 | Не применимо |
| Windows 10 | 5.812 | Не применимо |
| Windows Server 2016 | 5.812 | Не применимо |
Устанавливаемый пакет WSH 5.6 совместим с Windows 95/98/Me и Windows NT 4.0/2000. Версия 5.7 была доступна для Windows 2000, Windows XP и Windows Server 2003. После марта 2006 года отдельные дистрибутивы для старых ОС (Windows 9x, Windows NT 4.0) были удалены с сайта Microsoft.
Начиная с Windows XP SP3, для загрузки доступна лишь версия 5.7, а более новые версии поставляются с выпусками Windows.
Версии
| Версия | Входит в состав | Также доступен для |
|---|---|---|
| 1.0 | Windows CE 3.0 (доп. установка) Windows 98, Windows 98 SE |
Windows 95 Windows NT 4.0 SP3 и новее |
| 2.0 (также WSH 5.1) | Windows 2000 RTM, SP1, SP2 Windows Me |
Windows 95 Windows NT 4.0 SP4 и новее Windows 98 |
| 5.6 | Windows 2000 SP3 и новее Windows XP RTM, SP1, SP2 Windows Server 2003 |
Windows 9x Windows NT 4.0 SP6a и новее |
| 5.7 | Windows XP SP3 Windows Vista Windows Server 2008 |
Windows 2000 SP4 и новее Windows XP Windows Server 2003 |
| 5.8 | Windows 7 Windows 8 Windows 8.1 Windows Server 2008 R2 Windows Server 2012 Windows Server 2012 R2 |
Не применимо |
| 5.812 | Windows 10 и новее Windows Server 2016 и новее |
Не применимо |
Примечания
- ↑ Windows Script Host overview (англ.). Microsoft Docs. Microsoft. Дата обращения: 30 апреля 2024. Архивировано 31 марта 2025 года.
- ↑ MSDN — Windows Scripting Host (англ.). Microsoft Docs. Microsoft. Дата обращения: 30 апреля 2024. Архивировано 18 июля 2006 года.
- ↑ 1 2 What Is WSH? (англ.). msdn.microsoft.com (24 октября 2011). Дата обращения: 30 апреля 2018. Архивировано 7 января 2018 года.
- ↑ Windows Script Host Basics (англ.). msdn.microsoft.com (24 октября 2011). Дата обращения: 30 апреля 2018. Архивировано 8 августа 2017 года.
- ↑ Windows Script Host Object Model (англ.). msdn.microsoft.com (24 октября 2011). Дата обращения: 30 апреля 2018. Архивировано 8 августа 2017 года.
- ↑ 1 2 Windows Script Host 5.6 Boasts Windows XP Integration, Security, New Object Model (англ.). msdn.microsoft.com. Дата обращения: 30 апреля 2018. Архивировано 18 февраля 2008 года.
- ↑ Take Command 18.00 help: SCRIPT command (англ.). jpsoft.com. Дата обращения: 30 апреля 2018. Архивировано 2 мая 2017 года.
- ↑ Norman — Antivirus & Security Software for Home & Business (англ.). AVG.com. Дата обращения: 30 апреля 2018. Архивировано 21 февраля 2006 года.
- ↑ Meyer (Aquent LLC), Tara Providing a Secure eXPerience (англ.). msdn.microsoft.com (30 июня 2006). Дата обращения: 30 апреля 2018. Архивировано 10 ноября 2017 года.
- ↑ CasioCalc.com project, 15.09.2016 (англ.). CasioCalc.com. Дата обращения: 30 апреля 2018.
- ↑ Notes/Domino 4 and 5 Forum: RE: Suggestion: Make LotusScript a script engine for Windows Scripting Host (англ.). Дата обращения: 12 марта 2015. Архивировано 21 марта 2015 года.
- ↑ ASCI XLNT help (англ.). Advanced Systems Concepts. Дата обращения: 30 апреля 2018.