整合营销服务商

电脑端+手机端+微信端=数据同步管理

免费咨询热线:

VBScript 将从 Windows 上消失,微软

VBScript 将从 Windows 上消失,微软放出弃用计划!

理 | 屠敏
出品 | CSDN(ID:CSDNnews)

去年 10 月,微软提前在“Windows 客户端已弃用功能”列表中预告了一名新成员——VBScript 的存在,让众人做好弃用这门语言的准备。

时光飞逝,近日,微软正式发布了一篇长文公告,分享了关于《弃用 VBScript:时间表和后续步骤》的最新动态,宣布 VBScript 的淘汰会分为「三步走」:一是最初会将 VBScript 作为 Windows 操作系统中的一项可选功能,默认开启;二是取消默认开启;三是计划在 2027 年之后完全将该功能从 Windows 上移除。

毋庸置疑,此举不仅意味着弃用 VBScript 已经成为板上钉钉的事情,同时也标志着一个时代的终结。


VBScript 的 28 年

回看过往,VBScript(Visual Basic Scripting Edition)是微软在 1996 年首次推出的一种轻量级脚本语言。

在早期的互联网时代,VBScript 被用来为网页添加客户端交互功能,类似于JavaScript。通常它被嵌入在 HTML 页面中,并与 ASP 和 WSH(Windows Script Host)等技术结合使用。

这门语言也作为 Windows 操作系统中的系统组件提供,系统管理员一般都喜欢用 VBScript 编写脚本来实现各种自动化管理任务,如文件操作、注册表编辑、用户账户管理和网络配置等。

在 Office 应用上,尽管 VBA 更为常用一些,但是也有不少开发者将 VBScript与 Office 应用程序(如 Excel、Word 和 Outlook)集成,用于自动化任务和宏编写。

再者,在软件测试领域,VBScript 被用作一些测试自动化工具(如 QTP/UFT,现称为 Micro Focus UFT)的脚本语言。测试人员使用 VBScript 编写测试脚本来自动化软件测试流程。

受益于这些领域,外加简单易学的特性,VBScript 也成为不少程序员的启蒙语言,快速理解编程概念和脚本编写。

据最新的 TIOBE 榜单显示,VBScript 经过了 28 年的发展至今,使用率仍有 0.34%。这也意味着有不少遗留应用程序、工具中仍然存在不少 VBScript 的代码。


为什么要弃用 VBScript?

谈及为什么要弃用 VBScript,正如我们此前报道的,一方面,VBScript 自身迭代已经跟不上了时代的步伐,其中:

  • VBScript 的命令集相对较小,功能有限,难以处理复杂的任务;

  • 不支持面向对象编程(OOP),这限制了其在大型应用开发中的使用;

  • 这门语言本身是微软开发,主要支持 Windows 系统,这在如今的跨平台开发环境中是一个严重的限制;

  • 还缺乏模块化和组件化、异步处理能力等多种能力...

更为让人无奈的是,不同于现代脚本语言通常都有活跃的维护团队,持续推出新版本,不断改进语言特性和性能,VBScript 缺乏持续的更新和维护,它的最新版本还停留在 14 年前的 2010 年 5.8 版本。

相比之下,2006 年 PowerShell 的出现以及 JavaScript 的流行对 VBScript 带来了致命的打击。

其中,PowerShell 不仅支持强大的脚本编写功能,可以处理复杂的自动化任务,还内置了大量功能强大的命令(Cmdlets),能够直接与系统、文件、注册表、服务和应用程序进行交互。PowerShell 基于 .NET 框架,能够处理对象,使数据操作和传递更加直观和高效。

另外,不像 VBScript 那样局限于 Internet Explorer,已经成为网页开发的标准脚本语言 JavaScript 支持几乎所有现代浏览器(如 Chrome、Firefox、Safari 和 Edge)。JavaScript 也拥有丰富的库和框架(如 React、Angular 和 Vue),极大地简化了现代 Web 应用的开发。

在二者的夹击下,VBScript 几乎无用武之地。

微软项目经理 Naveen Shankar 对此表示,“决定终止支持是为了过渡到更现代、更高效、更先进的选项......多年来,技术不断进步,催生出更强大、更通用的脚本语言,如 JavaScript 和 PowerShell。这些语言提供了更广泛的功能,更适合现代 Web 开发和自动化任务。

当然,微软在公告中特别做了解释,其声称,弃用是产品生命周期中的一个阶段,是指某一特性或功能不再处于积极开发阶段,并可能在产品或在线服务的未来版本中删除。

不过,「这是一个渐进的过程,可能持续几个月或几年。被淘汰的功能通常会被更好、更先进或功能性更强的功能所取代。在正式移除之前,该功能通常会继续运行并得到全面支持。移除后,该功能或能力将不再工作。移除过时的组件有助于降低复杂性,同时保证安全性和工作效率。」


弃用 VBScript 三步走

因此,微软也给已经使用了 VBScript 语言的应用程序预留出足够的过渡时间,其分享了三个阶段,直至 VBScript 从未来的 Windows 操作系统版本中完全退役。

阶段 1

在第一阶段,VBScript FOD(按需功能)将默认预安装在所有 Windows 11 版本 24H2 及以上版本中。

在这一时间段内,如果你的应用程序、进程等对 VBScript 有依赖,那么体验不会受到影响。

你可以在“开始” > “设置” > “系统” > “可选功能”中看到默认启用的 VBScript FOD。

Windows系统设置的屏幕截图显示VBScript安装在可选功能下

阶段2

微软计划到 2027 年,VBScript FOD 将不再默认启用。这意味着,如果到那时你的应用程序仍然依赖 VBScript,则需要手动启用 FOD,以防止应用程序和进程出现问题:

  1. 转到开始>设置>系统>可选功能。

  2. 选择顶部“添加可选功能”选项旁边的查看功能。

  3. 在搜索对话框中输入“VBSCRIPT”,然后选择结果旁边的复选框。

  4. 要启用已禁用的功能,请按下一步。

阶段3

VBScript 将从 Windows 的未来版本中退役并淘汰。这意味着 VBScript 的所有动态链接库(.dll 文件)都将被删除。因此,依赖 VBScript 的项目将停止运行。

当进入第三阶段时,微软建议所有使用 VBScript 的项目必须进行迁移。

如果你有依赖 VBScript 自动执行任务的网站或应用程序;或者使用 VBScript 自定义操作作为安装包中的一项功能,微软建议可以迁移到 PowerShell。

由于 VBScript 功能目前仅限于 IE 11 之前的浏览器,因此在 2027 年之后,微软官方建议这类网页统一迁移并使用 JavaScript 语言。


VBScript 的退役,对你是否有影响?

随着 VBScript 的弃用,不少程序员感叹:

“在 Windows 和 office 的世界里,vbs 真是一个不错的东西”;

“21年前写下第一行 VBScript,纪念我逝去的青春”。

不过,也有网友对微软的建议并不买账:

  • 我觉得 PowerShell 这门语言啰嗦而且不符合人体工程学。这艘船已经扬帆起航,但我希望微软能做些什么,让 Windows 自动化更接近其他平台,这样它就能从其他平台上的优秀软件中受益。

    看来,VBA 将继续作为 MS Office 的编程前端语言而存在,这实在令人遗憾。他们不久前宣布 Excel 支持 Python,我希望它能作为 VBA 的可行替代品得到更好的推广。

  • 迄今为止,我一直避免在向最终用户分发的任何文件中使用 Powershell,因为 Windows 默认禁用未签名脚本的执行。使用 VBScript 或 BAT 文件自动执行基本任务更容易,因为这些脚本可以不签名运行...... 我想,如果微软现在重新考虑默认启用 Powershell 脚本执行功能,那也未免太奢望了。

对此,你如何看待 VBScript 的淘汰?对你的应用程序是否有影响?

来源:

https://techcommunity.microsoft.com/t5/windows-it-pro-blog/vbscript-deprecation-timelines-and-next-steps/ba-p/4148301

TML <script> 标签被用来向 HTML 中插入 VBScript。


HTML 中的 VBScript

如需在 HTML 中插入 VBScript,脚本必须写在标准的 <script> 和 </script> 标签之间。

在 <script> 标签中,请使用 type 属性来定义脚本语言 "text/vbscript":

<html>

<body>

<script type="text/vbscript">

...

</script>

</body>

</html>

IE 将解释和执行 <script> 和 </script> 之间的 VBScript 代码。


VBScript 输出

当 VBScript 被用在 Web 服务器上的 ASP 页面时,语句 response.write() 产生输出。

当我们使用 Internet Explorer 来测试 VBScript,我们使用 document.write() 来产生输出:

实例(仅适用于 Internet Explorer)

<html>

<body>

<script type="text/vbscript">

document.write("Hello World!")

</script>

</body>

</html>

在上面的实例中,浏览器输出 "Hello World!" 到 HTML 页面。

VBScript 不应该被用作客户端脚本语言!

在这里,我们使用仅适用于 IE 的 VBScript 的用于学习。

RPA实施中,邮件的自动化是必不可少的一部分内容。通过邮件,可以实现人与机器人之间的信息互通。

一、发送邮件的方式类型

有关发送邮件,有多种多样的方式。在开始之前,先了解一下在AA中发送邮件都有哪些实现方式。

1. 模拟人工操作

作为RPA本质的一种方式就是模拟人的操作,所以可以通过AA打开邮箱,创建邮件,编写邮件内容,添加附件等一系列操作来完成,此方法中,主要使用到AA的Object Clone命令,脚本如下截图。

缺点: 此方法执行效率低,易出错,针对于不同版本的outlook或其他邮件客户端,需要适配并修改代码。

2. 自带Command

在AA中也有相应的Command,如 "Send Email",此命令是通过SMTP发送邮件,需要在客户端中配置SMTP服务器,这里使用163邮箱进行示例,配置如下:打开AAE客户端,点击Tools->Options->Email settings

脚本如下:

结果:

缺点:

  • 命令中的的Message类型有两种方式,一种纯文本格式,一种是富文本格式,所以不能使用HTML的方式来发送消息,这种就不能实现客户定制化内容的需求。
  • Message中传入参数,邮件内容只能以文本格式显示,不能显示带格式的内容。

3. 利用好BotStore

在Automation Anywhere的Bot应用商店中,有很多封装好的Task/Metabots,如下图,可以通过搜索找到自己想要的Bots。

4. 其他方式

除了以上几种方式,可以使用其他语言来实现邮件发送的功能。如用C#编写,然后打包成dll,之后在Metabot中进行方法的调用;或者使用VBS脚本,可以用脚本调用outlook发送,或者使用windows自带的CDO.Message对象来发送。

二、使用VBS发送SMTP邮件

1. 起因

  • 客户要求不能使用dll,所以不能使用C#实现(C#发送邮件的功能已经实现,代码可以在知识星球中下载,链接:https://t.zsxq.com/zjUZr7i)
  • 模拟人手工操作,执行效率比较低,易出错
  • JavaScript实现发送邮件,需要用到外部的引用,也不方便调试,并且在AA中调用的时候会出现各种奇葩问题
  • Botstore中也都是基于C#开发,封装成dll的形式,所以也不能使用。

所以最终采用了使用VBS调用windows自带的CDO.Message对象来发送SMTP邮件,这样可以脱离outlook组件或者相关dll,也不需要其他外部的依赖,只要是windows系统都可以直接进行调试。

调试VBS方法:打开cmd,运行wscript C:\RPA\SendSMTPEmail.vbs进行调试

2. 思路及代码说明

AA中调用VBS脚本,在传入参数时候,如果参数的值中存在空格,则会出现传参错误的异常(因为Run Script命令传参是以空格作为分隔符的),也可以参考知识星球中这篇文章。所以在使用VBS脚本发送邮件时,需要使用AA脚本动态生成VBS脚本文件,然后发送邮件。

首先编写并调试VBS脚本,脚本代码如下:

在完成VBS代码调试之后,需要将其中的一些变量替换掉,之后编写AA脚本,在AA脚本中,需要将上面的VBS代码通过Log To File的命令写入到临时的文件中,然后使用Run Script命令执行临时的VBS脚本。(文件可以在知识星球中下载,链接:https://t.zsxq.com/E2rrFu7)

3. AA参数说明

在Metabot中的参数有如下:

四、总结

在AA中发送邮件的方式多种多样,用户可以依据自己的实际情况,选择合适的方法以提高开发效率和机器人的执行效率。在选择使用VBS/JavaScript脚本方式执行函数或者功能时,可以通过动态生成脚本的方式来避免一些传参的异常。

文中涉及到的代码都可以在知识星球中下载,链接:https://t.zsxq.com/E2rrFu7