Отключение VBScript в Windows (окончание поддержки)

В 2024 году Microsoft объявила о поэтапном прекращении поддержки ранее широко распространённого скриптового языка VBScript. Популярность VBS скриптов в сценариях автоматизации и управления системой долгое время обеспечивалось за счет простоты, легкости языка и открытости кода (синтаксис основан на Visual Basic), наличием встроенной в Windows среды выполнения и интерпретатора (через Windows Scripting Host), наличием большой библиотеки как предустановленных VBS скриптов в Windows, так и скриптов от техподдержки Microsoft и сторонних авторов.

Однако устаревшая архитектура, наличие большого количество уязвимостей и вредоносных сценариев использования VBScript привели к тому, что Microssoft более не рекомендует его использовать. Начиная с релизов Windows 11 24H2 и Windows Server 2025, язык сценариев VBScript переведен в статус deprecated и стал опциональной системной функцией (Feature on Demand). На данный момент компонент VBScript пока включен в Windows по умолчанию. Однако согласно дорожной карте, в релизах 2027 года компонент VBScript будет уже по-умолчанию отключен, после чего уже полностью удален из образа Windows.

Дорожная карта окончания поддержки vbscript

Включить или отключить VBScript можно через панель Параметры. Перейдите в раздел Settings -> System -> Optional features -> View optional features. Компонент VBSCRIPT по умолчанию установлен в Windows. Здесь вы можете удалить его при необходимости.

Опциональный компонент VBSCRIPT в Windows 11

Также можно проверить, установлен ли интерпретатор VBscript в Windows из командной строки PowerShell:

Get-WindowsCapability -Online -Name vbs*

PowerShell: Get-WindowsCapability -Online -Name vbs

Чтобы удалить его, выполните команду:

Remove-WindowsCapability -Online -Name "VBScript~~~~0.0.1.0"

Или через DISM:

DISM /Online /remove-Capability /CapabilityName:VBScript

Для установки компонента VBscript, выполните:

DISM /Online /Add-Capability /CapabilityName:VBScript

Или

Add-WindowsCapability -Online -Name "VBScript~~~~0.0.1.0"

Если интерпретатор VBScript отсутствует, у файлов с расширением VBS пропадут настроенные ассоциации, а при попытке запустить любой VBS скрипт из командной строки появится ошибка:

Program 'slmgr.vbs' failed to run: No application is associated with the specified file for this operation

Ошибка запуска VBS: No application is associated with the specified file for this operation

Если вы попробуете запустить VBS скрипт через wscript.exe (графический режим) или cscript.exe (консольный режим):

wscript.exe c:\windows\system32\slmgr.vbs

Windows Script Host
There is no script engine for file extension ".vbs".

wscript: There is no script engine for file extension ".vbs".

VBS скрипты все еще широко используются в корпоративных средах для автоматизации различных задач (особенного в доменных GPO, сценариях автоматического развертывания, скриптах SCCM, заданиях Task Scheduler). Microsoft рекомендует до момента полного отключения VBScript в Windows мигрировать нужный код на более современные языки (PowerShell, JavaScript).

Перед глобальным отключением VBScript в Windows, администраторам критически важно заранее исследоваться свои корпоративные среды на предмет задач, в которых все-еще используются VBS скрипты. Для аудита событий использования VBS кода на компьютерах можно использовать утилиту SYSMON.

Скачайте утилиту sysmon64.exe на компьютер и создайте следующий XML файл, который будет логировать загрузку библиотеки vbscript.dll:

<Sysmon schemaversion="4.50">
<EventFiltering>
<!-- Отслеживание загрузки vbscript.dll -->
<ImageLoad onmatch="include">
<ImageLoaded condition="contains">vbscript.dll</ImageLoaded>
</ImageLoad>
</EventFiltering>
</Sysmon>

Сохраните эту конфигурацию в XML файл, а затем установите службу Sysmon и драйвер устройства, который будет отслеживать нужные вам события:

Sysmon64.exe -i sysmon_settings.xml

sysmon установка драйвера и правила

Или команду Sysmon64.exe -c sysmon_settings.xml , чтобы обновить конфигурацию.

Теперь при каждом запуске движка VBScript в журнале событий будет фиксироваться событие с Event ID 7 (Image loaded: rule: ImageLoad). Анализ таких событий в Event Viewer -> Applications and Services Logs -> Microsoft -> Windows -> Sysmon -> Operational позволяет определить активность использования VBScript на компьютере.

Также по журналу событий Sysmon можно найти какие конкретно файлы VBS скриптов запускались, кем и когда.

Аудит событий использования скриптов VBScript в Windows

Следующий PowerShell скрипт позволить найти и отфильтровать события в журнале Event Viewer, в которых логируются информация о запуске файлов с расширением *.VBS (Event ID 1: Process Create (rule: ProcessCreate)):

Get-WinEvent -FilterHashtable @{LogName='Microsoft-Windows-Sysmon/Operational'; Id=1} | ForEach-Object {
$xml = [xml]$_.ToXml()
$processPath = $xml.Event.EventData.Data | Where-Object {$_.Name -eq 'Image'} | Select-Object -ExpandProperty '#text'
$commandLine = $xml.Event.EventData.Data | Where-Object {$_.Name -eq 'CommandLine'} | Select-Object -ExpandProperty '#text'
if ($commandLine -like '*.vbs*') {
[PSCustomObject]@{
TimeCreated = $_.TimeCreated
ProcessPath = $processPath
CommandLine = $commandLine
}
}
}

В этом примере я обнаружил несколько событий запуска VBS скриптов на компьютере.

PowerShell: события использования VBS скриптов

Таким образом с помощью Sysmon можно настроить аудит всех событий использования VBScript на компьютерах организации (не нужно включать такой аудит сразу на все системах, ограничитесь тестовыми группами типовых устройств). После обнаружения используемых VBS скриптов, проанализируйте их целесообразность и возможность переноса их кода в PowerShell.

Код VBScript обычно находится в таких типах файлов:

  • .vbs (VBScript)
  • .vba (Visual Basic for Application)
  • .wsf (Windows Script File)
  • .wsh (WSH settings file)

В Windows до сих пор используется огромное количество скриптов VBScript. Например, утилиты активации Windows (slmgr.vbs), Office (ospp.vbs), скрипты для удаления Office (Offscrub), утилита для вывода системной информации на рабочий стол (Bginfo) и т.д. Microsoft пока не разработала замену всем этим инструментам, поэтому о скором полном отключении VBScript речь, конечно, пока не идет. Но администраторам нужно уже заранее начать готовиться к этому шагу.


Предыдущая статья Следующая статья


Комментариев: 0 Оставить комментарий

Оставить комментарий

Ваш e-mail не будет опубликован. Обязательные поля помечены *

Я не робот( Обязательно отметьте)