VBScript ( Microsoft Visual Basic Scripting Edition) — устаревший язык программирования для написания сценариев в Microsoft Windows с использованием Component Object Model (COM), основанный на классическом Visual Basic и Active Scripting .
VBScript был популярен среди системных администраторов для управления компьютерами и автоматизации многих аспектов вычислительной среды.
Среды выполнения VBScript включают: Windows Script Host (WSH), Internet Explorer (IE) и Internet Information Services (IIS). [1] Среду выполнения можно встроить в другие программы с помощью Microsoft Script Control ( msscript.ocx ).
VBScript установлен по умолчанию в каждой версии Microsoft Windows для настольных ПК , начиная с Windows 98 ; [2] в Windows Server, начиная с Windows NT 4.0 Option Pack ; [3] и опционально в Windows CE (в зависимости от устройства, на котором он установлен).
В октябре 2023 года Microsoft объявила, что VBScript устарел. [4] В мае 2024 года был объявлен многоэтапный график устаревания, при этом удаление запланировано на 2027 год или позже. [5]
VBScript начинался как часть Microsoft Windows Script Technologies, запущенной в 1996 году. Эта технология (которая также включала JScript ) изначально была нацелена на веб-разработчиков. В течение периода чуть более двух лет VBScript продвинулся с версии 1.0 до 2.0, и за это время он получил поддержку системных администраторов Windows, искавших инструмент автоматизации более мощный, чем пакетный язык, впервые разработанный в начале 1980-х годов. [6] 1 августа 1996 года был выпущен Internet Explorer с функциями, включавшими VBScript. [7]
В версии 5.0 функциональность VBScript была расширена новыми возможностями, включая регулярные выражения ; классы ; оператор With ; [8] функции Eval , Execute и ExecuteGlobal для оценки и выполнения команд скрипта, созданных во время выполнения другого скрипта; система указателей на функции через GetRef, [9] и поддержка Distributed COM (DCOM).
В версии 5.5 SubMatches [10] были добавлены в класс регулярных выражений в VBScript, чтобы наконец позволить авторам скриптов захватывать текст в группах выражений. Эта возможность уже была доступна в JScript.
С появлением .NET Framework команда разработчиков скриптов решила реализовать будущую поддержку VBScript в ASP.NET для веб-разработки, [11] и, следовательно, новые версии движка VBScript разрабатываться не будут. Отныне его будет поддерживать команда Sustaining Engineering Team корпорации Microsoft , которая отвечает за исправление ошибок и улучшение безопасности. Для системных администраторов Windows компания Microsoft предлагает перейти на Windows PowerShell , поскольку VBScript устарел и в конечном итоге будет удален из Windows.
На веб-странице, загруженной Internet Explorer , VBScript по функциям похож на JavaScript . Код VBScript в HTML представляет собой логику, которая взаимодействует с объектной моделью документа (DOM) страницы, что позволяет реализовать функциональность, невозможную в HTML в одиночку. Однако другие веб-браузеры, такие как Chrome , Firefox и Opera, не поддерживают VBScript. Поэтому, когда требуются клиентские скрипты и кроссбраузерная совместимость, разработчики обычно выбирают JavaScript из-за его широкой кроссбраузерной совместимости.
VBScript используется для функциональности веб-страницы на стороне сервера через Active Server Pages (ASP). Механизм ASP, asp.dll , вызывает vbscript.dll для запуска скриптов VBScript. VBScript, встроенный в страницу ASP, содержится в переключателях контекста <% и %>. Следующий пример отображает текущее время в 24-часовом формате.
<% Явный параметр %> <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> <html> <голова> <title> Пример VBScript </title> </head> <тело> <div><% ' Получить текущее время из функции Now(). ' Знак '=', появляющийся после переключения контекста (<%), является сокращением ' для вызова метода Write() объекта Response. Dim timeValue : timeValue = Сейчас %> Время в 24 - часовом формате : <%= Час ( timeValue ) %> : <%= Минута ( timeValue ) %> : <%= Секунда ( timeValue ) %> . </div> </тело> </html>
VBScript может запускаться непосредственно в операционной системе через Windows Script Host (WSH). Файл сценария, обычно с расширением, .vbs
может быть запущен либо через Wscript.exe для графического пользовательского интерфейса (GUI), либо через Cscript.exe для интерфейса командной строки (CLI).
Файл скрипта Windows (WSF), стилизованный под XML, может включать несколько файлов VBS и, следовательно, является библиотекой кода VBScript, который может быть повторно использован модульным образом. Файлы имеют расширение .wsf
и могут быть выполнены с помощью wscript.exe или cscript.exe , как и файл..vbs
HTML -приложение (HTA) стилизовано под HTML. HTML в файле используется для генерации пользовательского интерфейса, а язык сценариев, такой как VBScript, используется для логики программы. Файлы имеют расширение .hta
и могут быть выполнены с помощью mshta.exe .
VBScript также можно использовать в компоненте скрипта Windows, классе скрипта с поддержкой ActiveX, который может вызываться другими приложениями с поддержкой COM. [12] Эти файлы имеют расширение .wsc .
Язык VBScript создан по образцу классического Visual Basic. [13] Среди его примечательных особенностей:
«Процедура» — это основная конструкция в VBScript для разделения кода на более мелкие модули. VBScript различает функцию, которая может возвращать результат в операторе присваивания, и подпрограмму, которая не может. Параметры являются позиционными и могут передаваться по значению или по ссылке.
Управляющие структуры включают обычные итеративные и условные циклы Do, операторы If-Then-Else и операторы Case, а также некоторые более сложные варианты, такие как ElseIf и вложенные управляющие структуры.
Для облегчения запоминания при кодировании и, конечно, для удобства чтения существует большое количество констант, таких как True и False для логических значений, vbOKCancel и vbYesNo для кодов MsgBox, vbBlack и vbYellow для цветовых значений, vbCR для символа возврата каретки и многие другие.
По умолчанию переменные имеют тип « Variant », но возможно (а иногда и необходимо) принудительно задать определенный тип (целое число, дата и т. д.) с помощью функций преобразования (CInt, CDate и т. д.)
Взаимодействие с пользователем осуществляется через функции MsgBox
и , InputBox
которые предоставляют простой формат диалогового окна для сообщений и ввода. Обе функции отображают подсказки, первая из которых возвращает стандартный ответ, а вторая возвращает один введенный пользователем текст или числовое значение. Для более сложного взаимодействия с элементами управления GUI можно использовать VBScript в сочетании с HTML, например, в HTML Application . Формы, управляемые событиями, не поддерживаются, как в Visual Basic или Visual Basic for Applications .
Имена не чувствительны к регистру. Однако считается, что лучшей практикой стиля VBScript является последовательность и разумное использование заглавных букв.
При размещении в Windows Script Host VBScript предоставляет многочисленные функции, которые являются общими для языков сценариев, но недоступны в Visual Basic 6.0 . Эти функции включают:
CScript, исполняющий скрипт командной строки, предоставляет возможности для:
Управление файловой системой, изменение файлов и потоковые текстовые операции реализованы с помощью библиотеки Scripting Runtime Library scrrun.dll
. Она предоставляет такие объекты, как FileSystemObject, File и TextStream, которые открывают программисту файловую систему Windows.
Двоичные файлы и ввод-вывод памяти предоставляются классом "ADODB.Stream", который также может использоваться для построителей строк (чтобы избежать чрезмерной конкатенации строк, которая может быть затратной) и для взаимного преобразования массивов байтов и строк. Доступ к базе данных возможен через объекты данных ActiveX (ADO), а метабазой IIS можно управлять с помощью функции GetObject() с достаточными разрешениями (полезно для создания и уничтожения сайтов и виртуальных каталогов). Файлами и схемами XML можно управлять с помощью интерфейсов прикладного программирования библиотеки Microsoft XML ( msxml6.dll , msxml3.dll ), которые также можно использовать для извлечения контента из Всемирной паутины через объекты XMLHTTP и ServerXMLHTTP (строки класса "MSXML2.XMLHTTP.6.0" и "MSXML2.ServerXMLHTTP.6.0" соответственно).
Функциональность также может быть добавлена с помощью технологий ActiveX. Проблемы безопасности привели к тому, что многие элементы управления ActiveX были занесены в черный список в процессе Internet Explorer компанией Microsoft, которая развертывает killbit через ежемесячные обновления безопасности Windows для отключения уязвимого кода Microsoft и сторонних разработчиков. [14] [15]
Программисты могут использовать расширяемость через модули COM (ActiveX) для специального оснащения Script Host и VBScript требуемыми или желаемыми функциями. Компонент "VTool", например, добавляет ряд диалоговых окон, доступ к двоичным файлам и другие функции. [16]
Microsoft обычно не выпускает IDE ( интегрированную среду разработки ) для VBScript, хотя редактор сценариев Microsoft включен в некоторые версии Microsoft Office.
Для отладки Microsoft Script Debugger все еще может использоваться в текущих версиях Windows, хотя инструмент не обновлялся годами. Он позволяет пользователю устанавливать точки останова в коде VBScript, но пользовательский интерфейс более чем неуклюж.
Существуют отладчики VBScript, доступные из сторонних источников, [17] [18], а многие текстовые редакторы предлагают подсветку синтаксиса для этого языка.
Во время выполнения, если возникает ошибка, хост скрипта выдает сообщение, в котором указывается тип ошибки и номер строки, вызвавшей ошибку.
Хотя VBScript является языком сценариев общего назначения, следует отметить несколько конкретных областей его использования. Во-первых, он широко использовался системными администраторами в среде Microsoft, [19] но с тех пор его значительно превзошел PowerShell . Во-вторых, VBScript является языком сценариев для Micro Focus Unified Functional Testing , инструмента автоматизации тестирования. [20] Третьей областью, на которую следует обратить внимание, является принятие VBScript в качестве внутреннего языка сценариев для некоторых встроенных приложений, таких как промышленные интерфейсы операторов и интерфейсы человек-машина. Иерархическая СУБД InterSystems Caché (которая имеет свои корни в языке MUMPS ) также поддерживает реализацию VBScript, Cache BASIC, для программирования хранимого кода. [21]
VBScript не содержит несколько полезных функций полного Visual Basic, таких как строгая типизация, расширенное обнаружение ошибок и возможность передавать переменное количество параметров в подпрограмму. Однако его использование относительно широко распространено, поскольку его легко изучить, а также потому, что тем, кто реализует код на этом языке, не нужно платить отчисления Microsoft, пока признается торговая марка VBScript. [ необходима цитата ] Когда организация лицензирует Visual Basic for Applications (VBA) у Microsoft, как это сделали такие компании, как Autodesk, StatSoft, Great Plains Accounting и Visio (впоследствии приобретенная Microsoft), ей разрешается распространять полную среду написания и отладки кода VBA вместе со своим продуктом.
VBScript используется вместо VBA в качестве макроязыка Outlook 97.
VBScript может эффективно использоваться для автоматизации повседневных офисных задач, а также для мониторинга в среде Windows. Он также может использоваться совместно с ADODB ActiveX Data Objects (ADODB) для эффективного подключения к базе данных.
VBScript также может использоваться для создания вредоносных программ и вирусов, таких как червь ILOVEYOU , который распространяется через вложения электронной почты в Outlook 97 и обходится в миллиарды долларов.