Blog Post

Windows IT Pro Blog
4 MIN READ

VBScript deprecation: Timelines and next steps

Naveen_Shankar's avatar
May 22, 2024

Scripting options for web development and task automation are modernizing. To provide you with the most modern and efficient options, we are replacing VBScript with more advanced alternatives such as JavaScript and PowerShell. Find out what VBScript deprecation means for you and how you can get ready.

What is VBScript?

Visual Basic Scripting Edition, commonly referred to as VBScript, is a lightweight scripting language first introduced by Microsoft in 1996. The language has been available as a system component in Windows OS and has been widely used for automating tasks and controlling applications on Windows-based systems. It's often embedded within HTML pages to add dynamic interactivity and functionality to web pages and is commonly used in conjunction with Microsoft technologies like Active Server Pages (ASP) and Windows Script Host (WSH). However, with the advancement of technology, more modern and efficient options are now available.

Why is VBScript deprecated?

Technology has advanced over the years, giving rise to more powerful and versatile scripting languages such as JavaScript and PowerShell. These languages offer broader capabilities and are better suited for modern web development and automation tasks.

Tip: Deprecation is a stage in the product lifecycle when a feature or functionality is no longer in active development and may be removed in future releases of a product or online service. It's a gradual process that can span a few months or years. The deprecated feature is usually meant to be replaced by something better, more advanced, or more functional. The feature will typically continue to work and is fully supported until it's officially removed. After removal, the feature or capability will no longer work. Removing a deprecated component helps reduce complexity while keeping you secure and productive.

VBScript deprecation plan

Considering the decline in VBScript usage in favor of more modern web technologies, we have developed a phased deprecation plan for VBScript. Let's review the timeline of these changes.

In October 2023, we announced our commitment to providing the best and most efficient experiences by gradually deprecating VBScript. Beginning with the new OS release slated for later this year, VBScript will be available as features on demand (FODs). The feature will be completely retired from future Windows OS releases, as we transition to the more efficient PowerShell experiences.

Deprecation will occur in three phases.

A visual timeline of important dates for VBScript deprecation phases.

Phase 1

In the first phase, VBScript FODs will be pre-installed in all Windows 11, version 24H2 and on by default. This helps ensure your experiences are not disrupted if you have a dependency on VBScript while you migrate your dependencies (applications, processes, and the like) away from VBScript. You can see the VBScript FODs enabled by default at Start > Settings > System > Optional features.

Screenshot of Windows System Settings shows VBScript installed under Optional features.

Phase 2

Around 2027, the VBScript FODs will no longer be enabled by default. This means that if you still rely on VBScript by that time, you'll need to enable the FODs to prevent your applications and processes from having problems.

Follow these steps if you need to continue using VBScript FODs:

  1. Go to Start > Settings > System > Optional features.
  2. Select View features next to “Add an Optional feature” option at the top.
  3. Type "VBSCRIPT" in the search dialog and select the check box next to the result.
  4. To enable the disabled feature, press Next.

Screenshot of a dialog box for adding an optional feature with a checkbox next to VBScript.

Phase 3

VBScript will be retired and eliminated from future versions of Windows. This means all the dynamic link libraries (.dll files) of VBScript will be removed. As a result, projects that rely on VBScript will stop functioning. By then, we expect that you'll have switched to suggested alternatives.

VBA projects that use VBScript

Visual Basic for Applications (VBA) allows users to automate repetitive tasks and customize functionalities within Microsoft Office suite. This includes Excel, Word, PowerPoint, Access, and some other applications. With VBA, you've been able to write scripts (macros) to manipulate data, create custom forms, automate reports, interact with other applications, and perform various other tasks to streamline workflows and enhance productivity.

Currently, VBScript can be used in VBA for two scenarios:

  • Scenario 1: Call a .vbs script directly from VBA.
  • Scenario 2: Use VBScript as typelib reference (such as VBScript regular expression) in VBA.

You can keep using the existing solutions if your VBA solutions have the scenarios above, as Phase 1 won't affect you. But future phases will affect you, so watch out for new developments.

If you see a runtime error or compile error while executing the VBA projects, check that the VBScript FODs aren't disabled by admin setting.

Next steps if my app or website has dependency on VBScript

Consider two modern solutions to replace VBscript, specifically PowerShell and JavaScript.

Migrate to PowerShell

We recommend migrating to PowerShell if you:

  • Have websites or applications dependent on VBScript for automating tasks.
  • Use VBScript custom actions as a feature in installer packages. During setup process, these custom actions can use the installation session and perform complex tasks. These custom actions may stop working after deprecation.

In these cases, we recommend you migrate to PowerShell. Learn how to do that at Converting VBScript to Windows PowerShell.

Migrate to JavaScript

As VBScript functionality is currently limited to browsers predating Internet Explorer 11, we recommend migrating your webpages to JavaScript before phase 2. JavaScript offers cross-browser compatibility, working seamlessly across modern browsers such as Microsoft Edge, Mozilla Firefox, Google Chrome, and Apple Safari. Notably, these browsers have never implemented support for VBScript.

If your webpage functions properly across these modern browsers, then VBScript isn't involved, and its deprecation won't affect you.

Start planning your migration and stay in touch!

We're here to help you with the latest updates around VBScript deprecation and to provide additional support as you migrate your dependencies during phases 1, 2, and 3.

Are there any special considerations or scenarios that you'd like to talk about? Please leave us a comment below.

In the meantime, check out additional resources related to VBScript functionality and deprecation:


Continue the conversation. Find best practices. Bookmark the Windows Tech Community, then follow us @MSWindowsITPro on X/Twitter. Looking for support? Visit Windows on Microsoft Q&A.

Updated Jun 13, 2024
Version 2.0

178 Comments

  • hi Naveen_Shankar​ I am seeing the following error when installing AMD Chipset drivers. Appears like Microsoft should talk with AMD here.
    The point is that - thankfully - vbscript optional feature is no longer installed in Windows 11 25H2.

    (edit: seems it was removed on a number of devices, other community replies indicate it's not a generic behaviour, thanks @heinziat @simon_aebi) 

    repro: 



    Across the log there are different actions that invoke vbscript.

    Action 21:36:12: INSTALL. Action start 21:36:12: INSTALL. MSI (c) (48:90) [21:36:12:899]: UI Sequence table 'InstallUISequence' is present and populated. MSI (c) (48:90) [21:36:12:899]: Running UISequence MSI (c) (48:90) [21:36:12:899]: PROPERTY CHANGE: Adding EXECUTEACTION property. Its value is 'INSTALL'. MSI (c) (48:90) [21:36:12:899]: Skipping action: MSIExtract_MUP (condition is false) MSI (c) (48:90) [21:36:12:899]: Skipping action: ExitExtractionSetup (condition is false) MSI (c) (48:90) [21:36:12:899]: Doing action: DetectAMD Action 21:36:12: DetectAMD. Action start 21:36:12: DetectAMD. MSI (c) (48:E4) [21:36:12:902]: Cloaking enabled. MSI (c) (48:E4) [21:36:12:902]: Attempting to enable all disabled privileges before calling Install on Server MSI (c) (48:E4) [21:36:12:902]: Connected to service for CA interface. MSI (c) (48:30) [21:36:12:939]: Note: 1: 2738 Info 2738.Could not access VBScript run time for custom action . Action ended 21:36:12: DetectAMD. Return value 1. MSI (c) (48:90) [21:36:12:940]: Doing action: ISSetAllUsers

    Remediation: Optional Features > Added vbscript

    • AlexLaforge's avatar
      AlexLaforge
      Iron Contributor

      The AMD drivers installation probleme encountered by Karl-WE​ is only an ONE EXAMPLE of the countless applications that will break with this insane VBScript deprecation, motivated by nothing.

      • Keeping VBScript does not harm security.
      • Keeping VBScript does not weight the salary expenses for Microsoft.
      • It will just disrupt all the ecosystem. Folks at Microsoft, please deprecate CMD, WBEM, and WMI too while you're at it!

      Why is https://www.change.org/p/ask-microsoft-to-cancel-their-planned-removal-of-vbscript-classic-asp growing ? Because this decision was absurd and dangerous.

      Naveen_Shankar​ We are still desperately waiting for updates on the CLASSIC ASP platform, that is widely used by businesses, and big ones.

      • Karl-WE's avatar
        Karl-WE
        MVP

        Hi AlexLaforge​ I do not have an opinion about the security aspect of vbscript.

        Is it required that VBscript uses UAC when operating outside its security context?
        Is it possible to sign VBscript so tampering will prevent execution?

        The named driver is a very recent one and its failure shows that the ecosystem (Partners) seem not to be up to par with the speed of the deprecation process.
        I believe that I have commented it earlier a number of Microsoft own stack uses vbscript still. And this has to change SOON™️.
        And these are likely changed that are intrusive, should be down-level OS when security is a reason.

        This means customers and users need a solution that will target:

        • Windows Server 2022
        • Windows Server 2025
        • Windows Server vNext
        • Azure Local
        • Office Product Activation for subscription and non subscription Office versions, that are still sold.

        There are a lot of items within the ecosystem of Microsoft that still rely on vbscript and I see no movement that they are replaced by signed PowerShell scripts or better PowerShell 7 modules / commandlets, as expected.

        • Office Activation (ospp.vbs)
        • Windows Activation (slmgr.exe)
        • printer vbs scripts in c:\windows\system32
        • ADK MDT (deprecated)
        • formerly sconfig (Windows Server) 
        • sconfig product activation > slmgr
          and certainly more.

        I would like to recommend that Naveen_Shankar​ and the teams, as this is a cross PG effort including Core OS, might look into a better and faster adoption rate by Microsoft internally and vendors, such as AMD, at the point when W11 25H2 has already raised the bar.

        Partial output of vbscripts in a Windows 11 25H2 installation:
        Edit: Mind WinSxS is the component store not active scripts in the OS. Also some are duplicated as we still have SYSWOW64, hope this will go away or become optional someday, as I personally don't need 32bit app support.

         

  • to update the great guidance above W11 25H2 has removed the feature by default.

    In Windows 11 25H2 the Optional Feature UX has drastically changed, and improved since one now can select multiple features at once to remove or add and using a full-text search.

    Winkey > type optional feature > click on View feature > confirm UAC

     

    re-adding feature > See available features > search vb > add

    Note: 
    This operation takes an extended amount of time. The installation process bar might get stuck for like 5-10 minutes, while the servicing stack is adding the feature.

     

    • HeinziAT's avatar
      HeinziAT
      Iron Contributor

      Karl-WE​ "W11 25H2 has removed the feature by default"

      Is that really the case? Your comment worried me, so I installed a fresh W11 25H2 on a test VM, and the VBSCRIPT optional feature was installed by default. 

      • Simon_Aebi's avatar
        Simon_Aebi
        Copper Contributor

        Tested it yesterday an VBSCRIPT was still enabled in W11 25H2

  • It seems that more people are affected by the issue, but it is yet unclear what does remove VBscript on Windows 11 25H2

    Error Message when launching the AMD chipset driver setup (wrapper):
    This installer is intended to be deployed only on an AMD System. Exiting installation as the requirement is not satisfied.


    The rootcause of this error right after starting the AMD chipset package, is also related to a VBscript, that I was able to confirm on customer systems today.
    As soon you install vbscript (takes up to 15-20 minutes, to re-add optional features), the error message when launching the installer is gone.

    How was I able to report the previous error with VBscript missing during the setup? I could not figure out what was causing the failure and extracted the driver package then ran the setup.exe. This does not have the vbscript CPU check in place, just the wrapper does. 

    So both cases have the same root cause.

    see Elevenforum.com AMD Chipset Error

    • mjb8034's avatar
      mjb8034
      Brass Contributor

      There are likely thousands of installers that will break, and PowerShell is not an option since it runs out of process so you cannot pass it the installer session handle.

  • lucas_guimaraes's avatar
    lucas_guimaraes
    Copper Contributor

    Hi everyone,

     

    Given that Microsoft is planning to deprecate VBScript, it likely won't be long before Classic ASP support ends as well. With that in mind, I’ve launched a cross-platform open-source project in GoLang to implement an ASP server/engine.

     

    A lot of functionality is already working. I also believe we could eventually extract a standalone VBScript interpreter from this project.

     

    If you'd like to contribute or just take a look, here is the GitHub repository: https://github.com/guimaraeslucas/axonasp

    • omix's avatar
      omix
      Copper Contributor

      This is actually a very valuable direction.

       

      What many people miss is that Classic ASP wasn’t popular because of VBScript itself, but because it dramatically lowered the friction between HTML, HTTP, and the database. You could think in pages, not architectures.

       

      Replacing ActiveScript with nothing was one of Microsoft’s biggest strategic mistakes. Not every problem needs microservices, ORMs, containers, or a full framework stack. Sometimes people just want to write a small application fast, with minimal cognitive overhead.

       

      History already proved this point. When Classic ASP stagnated, PHP did not win because it was beautiful or elegant. It won because it preserved the same low friction mental model. That is why it dominated such a large portion of the web.

       

      A modern, cross platform, ASP like engine on Go or Lua, something like page.gasp,  page.lasp or page.asp, even with a VBScript inspired syntax, would absolutely attract users. Especially for intranet tools, admin panels, internal ERPs, and small but real applications.

       

      The key is not to recreate ActiveScript itself, but to preserve the ASP spirit: HTML first, simple request and response handling, and low mental overhead.

       

      Thank you for your efforts. I have added this project to my watchlist and will test it.

      • legacyvbs's avatar
        legacyvbs
        Copper Contributor

        Mental overhead? you are assuming VBscript is so simple that it does not require thought. It is simple to make a solution yes, but the complexities it solves is outstanding. Why waste time, with full frameworks and containers, etc? one language, one solution, one developer. but containerization I will add to my list. Also when are they going to opensource it?

  • ASP4 is a new Classic ASP/VBScript webserver runtime based on Python: https://github.com/PieterCooreman/ASP4
    It took me 5 days to prompt it together using GPT 5.2 Codex, Gemini Pro 3.0 and Claude Sonnet 4.6. It can easily be extended to a scripting host for VBScript. As it's based on Python, ASP4 also supports zipping/unzipping, image handling, bcrypt, JSON parsing/serialization and PDF generation. Check it out, as well as AxonASP. We're taking VBScript back.

    • mjb80341's avatar
      mjb80341
      Copper Contributor

      Web Server is only one aspect of VBscript. It is used elsewhere for administration and Windows Installer and other deployment projects. There are many thousands of installations and deployments for finished product, written with best-practices, that will fail if VBscript is disabled. These are used for anything from driver deployment packages to full-fledged applications and services. Many (most?) vendor deployment packages will cease to function once Microsoft decides to disable or remove VBscript. The time involved and cost to refactor all these deployment packages and applications would be in the hundreds of millions of dollars and likely exceed it. [Many authors of those packages (which have worked for decades) have moved on.]

      • Pieter_Cooreman's avatar
        Pieter_Cooreman
        Brass Contributor

        I hear you... But MicroSoft does not. But still, it must be possible to let AI generate something like the Windows Scripting Host, solely relying on Python. The Python Scripting Host. Actually, Python IS a scripting host. The only thing we need is a VBScript to Python transpiler. ASP4 does exactly that, and it also includes the complete legacy ASP classes and often used COM libraries. I don't manage servers, so I can't really judge what's needed exactly. But I'm sure anyone who still uses VBScript for Windows administration, should perfectly be able to tell what needs to be included. 

  • Y O's avatar
    Y O
    Copper Contributor

    Hi. About VBScript (cscript.exe) deprecation, I have scripts to create desktop shortcuts using WScript.Shell:

     

    Set oWS = WScript.CreateObject("WScript.Shell")

    sLinkFile = "%USERPROFILE%\Desktop\Publico.lnk"

    Set oLink = oWS.CreateShortcut(sLinkFile)

    oLink.TargetPath = "P:"

    oLink.Save

     

    How can I create the same script using PowerShell without cscript.exe? From what I've seen, the option for PowerShell is to use WScript.Shell, doesn't this mean that PowerShell still uses cscript.exe?

     

    $ShortcutPath = "$env:USERPROFILE\Desktop\MyShortcut.lnk"

    $TargetPath = "C:\Path\To\Your\Target.exe"

    $WshShell = New-Object -ComObject WScript.Shell

    $Shortcut = $WshShell.CreateShortcut($ShortcutPath)

    $Shortcut.TargetPath = $TargetPath

    $Shortcut.Save()

     

    Thanks in advance.

    Regards.

    • AlexLaforge's avatar
      AlexLaforge
      Iron Contributor

      Using WScript.Shell in PowerShell relies on COM, not VBScript itself. So VBScript deprecation does not automatically mean WScript.Shell will disappear. At the current time, "only" vbscript.dll and the Windows Script Host (WSH) environment are announced as being doomed to disappear. M$ did not make any announcement that the WScript.Shell COM Interface will disappear.

      But, hey Naveen_Shankar​ , here are the questions you're getting by announcing this deprecation so stubbornly, refusing to clarify the many issues:

      • Is the WScript.Shell COM interface affected?
      • Will the VBScript engine be maintained and reintegrated into asp.dll?

      What a lack of respect.

    • Ken_R's avatar
      Ken_R
      Copper Contributor

      Instead of re-writing your desktop shortcut script in PowerShell, consider re-writing it in JScript.  Save the code below as "a.js", then execute from the Command Prompt with "cscript.exe a.js".

       

      var oWS = WScript.CreateObject("WScript.Shell");
      var sDesktop = oWS.SpecialFolders("Desktop");
      var sLinkFile = sDesktop + "\\Publico.lnk";
      var oLink = oWS.CreateShortcut(sLinkFile);
      oLink.TargetPath="P:";
      oLink.Save();

       

      • Y O's avatar
        Y O
        Copper Contributor

        Hi Ken, thanks for your reply.

         

        That's the message in Event Viewer:

         

        VBScriptDeprecationAlert

        ID 4096

         

        VBScript is scheduled for deprecation. Our telemetry indicates that your system is currently utilizing VBScript.

        We strongly recommend identifying and migrating away from any VBScript dependencies at the earliest.

         

        The following process has been detected as using VBScript. The associated process tree and call stack are provided below to assist in identifying the scenario in which VBScript was invoked.

         

        ProcessName = "cscript.exe"

        ProcessTree = "cscript.exe;cmd.exe;userinit.exe;winlogon.exe"

        CallStack = "vbscript.dll+0x68C16;vbscript.dll+0x5571F;vbscript.dll+0x40348;cscript.exe+0x114C;cscript.exe+0x1835;cscript.exe+0x4970;cscript.exe+0x40CF;cscript.exe+0x3A74;cscript.exe+0xD648;KERNEL32.DLL+0x2E8D7;ntdll.dll+0x8C48C"

        ProcessTreeEnhanced = "cscript.exe("cscript /nologo

         

        The matter is that vbs and js uses cscript.exe (marked for deprecation), and the suggestion is to move to PowerShell, and what I've found is that even PowerShell uses WScript.Shell, so if PowerShell calls to cscript.exe under the hood, what's the solution?

         

        Regards.