Windows Scripting Host (WSH) 是什麼?

来源:https://www.cnblogs.com/bitssea/archive/2020/05/01/12590688.html
-Advertisement-
Play Games

本篇主要介紹 WSH 基礎知識,個人覺得很難理解,而且 Research 起來還很亂,所以決定記錄下來! WSH 是什麼: WSH 全稱是,Windows Scripting Host, 中文譯為“Windows腳本宿主”,是微軟的,一種腳本技術, 是內嵌在 Windows 系統中的,腳本語言的,工 ...


本篇主要介紹 WSH 基礎知識,個人覺得很難理解,而且 Research 起來還很亂,所以決定記錄下來!


WSH 是什麼:

WSH 全稱是,Windows Scripting Host,中文譯為“Windows腳本宿主”;是微軟的,一種腳本技術;是內嵌在 Windows 系統中的,腳本語言的,工作環境。在這個環境中,我們可以,以文字的形式,寫腳本,並執行腳本。環境中,還自帶了一些對象,同時也可以使用其他,第三方COM對象。這個環境,使我們可以充分利用腳本,來實現電腦工作的,自動化。所謂的 Host 也就是指,提供了,能讓 VBScript 執行的,一切的資源,的環境。而這所謂的,一切的資源,都包含了什麼呢?就包括瞭如下:

  1. Script engines (腳本語言支持,如,VBScript)
  2. Script execution hosts (wscript.exe 和 cscript.exe 執行文件)
  3. The WSH core object model (WSH 對象模型,就是自帶了一些對象給你用)

而,這三個 Component 之間的關係,就如圖下:



WSH 的用途:

這是我摘抄下來的兩句話,基本概括了 WSH 的用途:

  • WSH is an automation technology for Microsoft Windows operating systems.
  • WSH is a Windows administration tool.

第一句是說,WSH 是一種自動化技術;第二句是說,WSH 是一種 Admin 工具;合起來就是,WSH 主要用於自動化,通常用於 Admin 任務。

WSH 的歷史由來:

早年間的系統,裡面都有一個 Command Shell,人們可以往裡輸入,文字命令,然後,系統再回給你一堆文字。這些文字命令,既能控制系統的方方面面,也能控制電腦的運行。很快的,設計系統的人意識到,很多日常電腦操作的命令,都是不斷重覆的文字。於是之後的系統,就增加的新功能,就是,可以把命令存在一個文件中,然後,系統可以隨時讀取並執行,這個文件中儲存的命令。然後,這個“命令的清單”,就被稱為了,我們都知道的,batch files(批處文件),也叫做,shell scripts,batch jobs。隨後的幾年,batch file 得到了很多加強,如,支持 Parameterization (參數化),就是支持程式執行時,提供 Arguments。然後,又增加了 Control Flow 的支持,就是 if 和 loop 什麼的。後來,漸漸的,batch files,發展為了,一門簡單的 Macro 語言。但是,batch files 語言,也有一系列的缺點和不足;如,syntax 很麻煩,並且,和其他 Windows 程式的交互,非常的局限。正是這些缺點的不足,讓微軟決定開發一套,不同於傳統的 Commend-Line 概念的,而是,基於,現代的 Object-Oriented 概念的,腳本技術。這套新技術,被統稱為,System Scripting,也就是,系統腳本。然後從 Windows98 起,微軟就推出了 WSH 和 VBScript,用於取代原來的,Batch Script 技術。WSH 提供了一個,乾凈整潔的,腳本環境,和一套完整的,對象模型。讓我們可以調用其他程式,和訪問系統功能,VBScript 則提供了一套,邏輯清晰,結構工整的,腳本語言。這也就是,WSH 和 VBScript,的歷史由來。

WSH 對象模型:

英文全稱為,Windows Script Host Object Model;個人理解,對象模型,就是對象(Object)的組織結構(圖)。其實,整個 Windows 操作系統,都可以理解為,一大堆對象(Objects)的集合。通常,每個編程環境,都會提供自己的對象模型,然後,開發人員可以使用這些對象模型,解決各種問題。而,WSH 對象模型,就是 WSH 工作環境里,自帶的一套,核心對象的,模型。一共自帶了14個對象,各有各的作用,詳見下麵的說明:

關於 Wscript 對象:

其中,Wscript Object,是 WSH 對象模型,中的 Root Object (根對象),It is from this object that all other objects are instantiated。Wscript Object,每次開機時候,就自動被 established,所以,寫代碼的時候,可以拿來就用,不用再被 instantiated。例如,你可以直接使用 Wscript 的 Method,Wscript.Sleep()。但是,其他任何Object,你要像使用它的 Method,你都需要像用 Wscript.CreateObject(),去 Establishes an instance of the specified object,然後,才能用這個新的 instance 去調用,它旗下的 method 和 attribute。下麵是,WSH 對象模型的圖,再下麵的表格是,上面提到的14個核心對象的作用。



No. Name Description
1 Wscript 主要作用是提取命令行變數, 確定腳本文件名, 確定 WSH 執行文件名 (wscript.exe 還是 cscript.exe),
確認 Host 版本信息, 創建, 關連及分離 COM 對象, 寫入事件,
按程式結束一個腳本文件的運行, 向預設的輸出設備(如對話框, 命令行)輸出信息等.
2 WshArguments 主要作用是獲取全部的命令行變數.
3 WshNamed 負責獲取指定的命令行參數集.
4 WshUnnamed 負責獲取未經指定的命令行參數集.
5 WshNetwork 主要作用是開放或關閉網路共用, 連接或斷開網路印表機, 映射或取消網路中的共用, 獲取當前登陸用戶的信息.
6 WshController 創建一個遠程腳本對象.
7 WshRemote 實現網路中對電腦系統的遠程管理, 也可按計劃對其它程式或腳本進行處理.
8 WshRemote Error 作用是當一個遠程腳本(WshRemote 對象)因腳本錯誤而終止時, 獲取可用的錯誤信息.
9 WshShell 主要負責程式的本地運行, 處理註冊表項, 創建快捷方式, 獲取系統文件夾信息, 處理環境變數等.
10 WshShortcut 主要用於按計劃創建快捷方式.
11 WshSpecialFolders 用於獲取任意一個 Windows 特殊文件夾的信息.
12 WshURLShortcut 用於按程式要求創建進入互聯網資源的快捷方式.
13 WshEnvironment 用於獲取任意的環境變數(如 WINDIR, PATH, 或 PROMPT).
14 WshScriptExec 用於確定一個腳本文件的運行狀態及錯誤信息.


篇尾總結:

如果想更多的瞭解,VBScript 或者 Batch Script,強烈推薦下麵兩本書:

  • 《Windows Script Host》Tim Hill
  • 《Windows NT Shell Scripting》Tim Hill

可惜好像沒有中文版,而且都是1999前後的書籍了。我從網上的舊書中淘到了一本,哈哈。親自讀過第一本,確實很好。文中部分內容,也借鑒了這本書。好吧,就寫這些吧!


參考資料:

  1. Windows Script Host 是什麼-ZOL問答
  2. Windows腳本宿主_百度百科
  3. WSH_百度百科
  4. Windows Script Host Object Model
  5. WScript Object | Microsoft Docs
  6. WshShell Object | Microsoft Docs
  7. Windows Script Host - Tim Hill - Google Books
  8. Windows Script Host - Wikipedia
  9. VBScript - What Is WSH?
  10. WshShell 對象介紹 - CSDN博客
  11. Wscript對象詳解 - CSDN博客
  12. 《Microsoft WSH and VBScript Programming for the Absolute Beginner》

您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • 2018年開始各大互聯網公司對前端技術人才的需求缺口依然很大,然而公司招不到人和學生找不到工作的矛盾卻更加突出,這一切都與前端技術的飛速發展息息相關,公司對前端人才的開發經驗要求、技術要求逐漸提高。那麼企業到底需要什麼樣的人才呢?請看詳細分析: 一、2020年IT互聯網招聘需求是什麼? 我們先來看看 ...
  • 我看很多人都弄不清楚css的層級關係 自己也百度過很多網上的z-index的說法,比如 什麼是“層疊上下文” 層疊上下文(stacking context),是HTML中一個三維的概念。在CSS2.1規範中,每個盒模型的位置是三維的,分別是平面畫布上的X軸,Y軸以及表示層疊的Z軸。一般情況下,元素在 ...
  • 在中國互聯網行業崛起的大背景下,大家普遍對互聯網行業發展持樂觀態度。據今年第二季度招聘信息顯示,目前web前端工程師日均崗位缺口已經超過50000,隨著互聯網+的深入發展,html5作為前端展示技術,市場人才需求量將呈直線上漲。 一個好的Web前端工程師在知識體繫上既要有廣度,又要有深度,所以很多大 ...
  • jQuery 選擇器 | 選擇器 | 實例 | 選取 | | : | : | : | | | $(" ") | 所有元素 | | id | $(" lastname") | id="lastname" 的元素 | | . class | $(".intro") | 所有 class="intro" ...
  • css中相鄰元素的margin其實是會自動合併的,且取較大值。 <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>test</title> <style> .div1 { width: 60px; height ...
  • 自 2.2 開始,Taro 引入了插件化機制,允許開發者通過編寫插件的方式來為 Taro 拓展更多功能或者為自身業務定製個性化功能,歡迎大家進行嘗試,共同討論~ 當前版本 2.2.1 官方插件 Taro 提供了一些官方插件 "@tarojs/plugin mock" ,一個簡易的數據 mock 插件 ...
  • 自己整理給自己看的,有興趣可以參與一下 一:Css相關 一:盒模型 二:居中相關 三:比較容易被忽略的css樣式 四:如何修改chomre的記住密碼後自動填充的黃色背景 五:CSS 硬體加速 二:JS相關 一:數據類型檢測 二:深淺拷貝 三:promise 四:jquert 鏈式寫法的調用原理 五: ...
  • 十分鐘教條與經驗,輕鬆搞定系統分析師的案例分析 前言 系統分析師培訓班通過統計,得到一個結論:培訓班的考生,死得最多的就是案例分析。 為什麼呢?因為客觀題只要平時多看,多刷就行了,論文則有固定套路。但是案例則是需要考生自己主動對外輸出,並且難以有一個統一的套路。所以,那些培訓班的考生,死得最多的就是 ...
一周排行
    -Advertisement-
    Play Games
  • 移動開發(一):使用.NET MAUI開發第一個安卓APP 對於工作多年的C#程式員來說,近來想嘗試開發一款安卓APP,考慮了很久最終選擇使用.NET MAUI這個微軟官方的框架來嘗試體驗開發安卓APP,畢竟是使用Visual Studio開發工具,使用起來也比較的順手,結合微軟官方的教程進行了安卓 ...
  • 前言 QuestPDF 是一個開源 .NET 庫,用於生成 PDF 文檔。使用了C# Fluent API方式可簡化開發、減少錯誤並提高工作效率。利用它可以輕鬆生成 PDF 報告、發票、導出文件等。 項目介紹 QuestPDF 是一個革命性的開源 .NET 庫,它徹底改變了我們生成 PDF 文檔的方 ...
  • 項目地址 項目後端地址: https://github.com/ZyPLJ/ZYTteeHole 項目前端頁面地址: ZyPLJ/TreeHoleVue (github.com) https://github.com/ZyPLJ/TreeHoleVue 目前項目測試訪問地址: http://tree ...
  • 話不多說,直接開乾 一.下載 1.官方鏈接下載: https://www.microsoft.com/zh-cn/sql-server/sql-server-downloads 2.在下載目錄中找到下麵這個小的安裝包 SQL2022-SSEI-Dev.exe,運行開始下載SQL server; 二. ...
  • 前言 隨著物聯網(IoT)技術的迅猛發展,MQTT(消息隊列遙測傳輸)協議憑藉其輕量級和高效性,已成為眾多物聯網應用的首選通信標準。 MQTTnet 作為一個高性能的 .NET 開源庫,為 .NET 平臺上的 MQTT 客戶端與伺服器開發提供了強大的支持。 本文將全面介紹 MQTTnet 的核心功能 ...
  • Serilog支持多種接收器用於日誌存儲,增強器用於添加屬性,LogContext管理動態屬性,支持多種輸出格式包括純文本、JSON及ExpressionTemplate。還提供了自定義格式化選項,適用於不同需求。 ...
  • 目錄簡介獲取 HTML 文檔解析 HTML 文檔測試參考文章 簡介 動態內容網站使用 JavaScript 腳本動態檢索和渲染數據,爬取信息時需要模擬瀏覽器行為,否則獲取到的源碼基本是空的。 本文使用的爬取步驟如下: 使用 Selenium 獲取渲染後的 HTML 文檔 使用 HtmlAgility ...
  • 1.前言 什麼是熱更新 游戲或者軟體更新時,無需重新下載客戶端進行安裝,而是在應用程式啟動的情況下,在內部進行資源或者代碼更新 Unity目前常用熱更新解決方案 HybridCLR,Xlua,ILRuntime等 Unity目前常用資源管理解決方案 AssetBundles,Addressable, ...
  • 本文章主要是在C# ASP.NET Core Web API框架實現向手機發送驗證碼簡訊功能。這裡我選擇是一個互億無線簡訊驗證碼平臺,其實像阿裡雲,騰訊雲上面也可以。 首先我們先去 互億無線 https://www.ihuyi.com/api/sms.html 去註冊一個賬號 註冊完成賬號後,它會送 ...
  • 通過以下方式可以高效,並保證數據同步的可靠性 1.API設計 使用RESTful設計,確保API端點明確,並使用適當的HTTP方法(如POST用於創建,PUT用於更新)。 設計清晰的請求和響應模型,以確保客戶端能夠理解預期格式。 2.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...