Windows Scripting Host (WSH) 是什麼?

本篇主要介紹 WSH 基礎知識,我的以爲很難理解,並且 Research 起來還很亂,因此決定記錄下來!html


WSH 是什麼:

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

  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,的歷史由來。

oop

WSH 對象模型:

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

this

關於 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個核心對象的做用。

google



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先後的書籍了。我從網上的舊書中淘到了一本,哈哈。親自讀過第一本,確實很好。文中部份內容,也借鑑了這本書。好吧,就寫這些吧!.net


參考資料:

  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》
相關文章
相關標籤/搜索