本篇主要介紹 WSH 基礎知識,我的以爲很難理解,並且 Research 起來還很亂,因此決定記錄下來!html
WSH 全稱是,Windows Scripting Host,中文譯爲「Windows腳本宿主」;是微軟的,一種腳本技術;是內嵌在 Windows 系統中的,腳本語言的,工做環境。在這個環境中,咱們能夠,以文字的形式,寫腳本,並執行腳本。環境中,還自帶了一些對象,同時也可使用其餘,第三方COM對象。這個環境,使咱們能夠充分利用腳本,來實現計算機工做的,自動化。所謂的 Host 也就是指,提供了,能讓 VBScript 執行的,一切的資源,的環境。而這所謂的,一切的資源,都包含了什麼呢?就包括了以下:shell
而,這三個 Component 之間的關係,就如圖下:編程
這是我摘抄下來的兩句話,基本歸納了 WSH 的用途:網絡
第一句是說,WSH 是一種自動化技術;第二句是說,WSH 是一種 Admin 工具;合起來就是,WSH 主要用於自動化,一般用於 Admin 任務。
工具
早年間的系統,裏面都有一個 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
英文全稱爲,Windows Script Host Object Model;我的理解,對象模型,就是對象(Object)的組織結構(圖)。其實,整個 Windows 操做系統,均可以理解爲,一大堆對象(Objects)的集合。一般,每一個編程環境,都會提供本身的對象模型,而後,開發人員可使用這些對象模型,解決各類問題。而,WSH 對象模型,就是 WSH 工做環境裏,自帶的一套,核心對象的,模型。一共自帶了14個對象,各有各的做用,詳見下面的說明:
this
其中,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,強烈推薦下面兩本書:操作系統
惋惜好像沒有中文版,並且都是1999先後的書籍了。我從網上的舊書中淘到了一本,哈哈。親自讀過第一本,確實很好。文中部份內容,也借鑑了這本書。好吧,就寫這些吧!.net