去年 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安裝在可選功能下
微軟計劃到 2027 年,VBScript FOD 將不再默認啟用。這意味著,如果到那時你的應用程序仍然依賴 VBScript,則需要手動啟用 FOD,以防止應用程序和進程出現問題:
轉到開始>設置>系統>可選功能。
選擇頂部“添加可選功能”選項旁邊的查看功能。
在搜索對話框中輸入“VBSCRIPT”,然后選擇結果旁邊的復選框。
要啟用已禁用的功能,請按下一步。
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 不應該被用作客戶端腳本語言! 在這里,我們使用僅適用于 IE 的 VBScript 的用于學習。 |
RPA實施中,郵件的自動化是必不可少的一部分內容。通過郵件,可以實現人與機器人之間的信息互通。
有關發送郵件,有多種多樣的方式。在開始之前,先了解一下在AA中發送郵件都有哪些實現方式。
作為RPA本質的一種方式就是模擬人的操作,所以可以通過AA打開郵箱,創建郵件,編寫郵件內容,添加附件等一系列操作來完成,此方法中,主要使用到AA的Object Clone命令,腳本如下截圖。
缺點: 此方法執行效率低,易出錯,針對于不同版本的outlook或其他郵件客戶端,需要適配并修改代碼。
在AA中也有相應的Command,如 "Send Email",此命令是通過SMTP發送郵件,需要在客戶端中配置SMTP服務器,這里使用163郵箱進行示例,配置如下:打開AAE客戶端,點擊Tools->Options->Email settings
腳本如下:
結果:
缺點:
在Automation Anywhere的Bot應用商店中,有很多封裝好的Task/Metabots,如下圖,可以通過搜索找到自己想要的Bots。
除了以上幾種方式,可以使用其他語言來實現郵件發送的功能。如用C#編寫,然后打包成dll,之后在Metabot中進行方法的調用;或者使用VBS腳本,可以用腳本調用outlook發送,或者使用windows自帶的CDO.Message對象來發送。
所以最終采用了使用VBS調用windows自帶的CDO.Message對象來發送SMTP郵件,這樣可以脫離outlook組件或者相關dll,也不需要其他外部的依賴,只要是windows系統都可以直接進行調試。
調試VBS方法:打開cmd,運行wscript C:\RPA\SendSMTPEmail.vbs進行調試
AA中調用VBS腳本,在傳入參數時候,如果參數的值中存在空格,則會出現傳參錯誤的異常(因為Run Script命令傳參是以空格作為分隔符的),也可以參考知識星球中這篇文章。所以在使用VBS腳本發送郵件時,需要使用AA腳本動態生成VBS腳本文件,然后發送郵件。
首先編寫并調試VBS腳本,腳本代碼如下:
在完成VBS代碼調試之后,需要將其中的一些變量替換掉,之后編寫AA腳本,在AA腳本中,需要將上面的VBS代碼通過Log To File的命令寫入到臨時的文件中,然后使用Run Script命令執行臨時的VBS腳本。(文件可以在知識星球中下載,鏈接:https://t.zsxq.com/E2rrFu7)
在Metabot中的參數有如下:
在AA中發送郵件的方式多種多樣,用戶可以依據自己的實際情況,選擇合適的方法以提高開發效率和機器人的執行效率。在選擇使用VBS/JavaScript腳本方式執行函數或者功能時,可以通過動態生成腳本的方式來避免一些傳參的異常。
文中涉及到的代碼都可以在知識星球中下載,鏈接:https://t.zsxq.com/E2rrFu7
*請認真填寫需求信息,我們會在24小時內與您取得聯系。