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

167 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
      Copper 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?