VBScript教程-第一章. 脚本的定义和术语
最近一直很郁悶一件事, 大學畢業開始就有的一本微軟腳本指南的書到現在也一點沒看. 所以突發奇想想把它讀完, 原書為英文, 看起來稍稍有些不爽, 準備順便翻譯并根據這幾年積累的那么一點點知識添加和注釋一些東西, 也當是技術+英語雙雙學習了. 全書25章, 由于本人水平和精力有限, 期間出現的問題和漏洞大家幫忙指出下哈, 多謝.
今天下午翻譯了第一章, 傳上來留個念想. 不敢保證定期更新, 但是我會盡我最大的努力來完成.
=========================萬惡的分割線后開始正題==========================
?
第一章. 腳本的定義和術語
在本章中你很有可能將完成你的第一個新腳本!你將學習到Script的工作原理, 以及Script是什么, 以及如何在Windows操作系統中使用他. 你同樣可以學習到關鍵的安全問題, 這些將在以后的章節中詳細討論.
?
?
什么是腳本?
腳本的定義實際上不同的人有不同的看法。例如一些人將執行的一系列計算機命令的序列定義為腳本, 包括在MS – DOS中便攜所謂腳本的批處理語言。這些批處理文件是多年來自動化管理的主要方式,直至今天許多管理員很大程度上仍然依賴批處理。現在一些人用一些高層次的腳本語言編寫小程序,例如VBScript。
實際上沒有人是錯的, 腳本其實可以定義為任何意義. 就我個人而言, 我比較傾向于后一種說法, 相信腳本應該是用VBScript, JavaScript, 或者是其他的高級語言來編寫腳本語言.固然批處理是一種在Windows下的自動管理方法, 但是你不應當對他期待太多,畢竟批處理和當今的腳本語言相比還是缺乏可用性和靈活性的, 畢竟這是一個二三十年的命令行語言.
本次教程的目的是學會使用高級腳本語言編寫的小程序, 特別是VBScript.
腳本宿主
腳本的撰寫就像一個普通的文本文件. 嘗試打開一個記事本, 把下面的文本拷貝到記事本中.
Set SNSet = GetObject("winmgmts:").InstancesOf ("Win32_OperatingSystem")
for each SN in SNSet
MsgBox "The serial number for the installed OS is: " & SN.SerialNumber
next
保存成”SampleScript.vbs”. 請確認擴展名正確. 如果一切正確windows系統會自動改變文件圖標為下圖, 在雙擊后會顯示系統的SN號.
現在大家還不需要了解這個腳本的內容, 我們將在WMI一章中講解.我們先來了解一下腳本的宿主程序.
為什么我們雙擊這個vbs文件他就可以直接運行, 我們可以很簡單的找到答案.下圖可見VBS文件是與”Microsoft Windows Based Script Host”關聯的. 所以當你雙擊后關聯的Script Host就會自動啟動來運行指定的VBS文件. 這就像你點擊一個XLS或者DOC文件一樣, 會自動啟動關聯的Office程序來運行他們.
那么,什么是”Microsoft Windows Based Script Host”(WSH)?這是一個內置的Windows組件。事實上,它的一個Windows下受保護的文件,這意味著您不能刪除或移除WSH的可執行文件,這個可執行程序就是Wscript.exe。 WSH同樣包含在Windows Me中,在Windows98中是可選安裝組件,在NT4.0和Windows95中可通過從www.Microsoft.com/scripting上下載后增加組件。
目前大多數計算機使用的是5.7版本的WSH, 可從www.Microsoft.com/scripting上下載.
實際上VBScript以及一些其他腳本語言還可以由cscript.exe執行, 這是一個更傾向于命令行窗口的宿主. 也是日常管理中一個非常有用的宿主, 在以后的章節中我們會在一些示例中使用它.
ActiveX Scripting Languages
VBScript是只是許多ActiveX腳本語言之一。這些語言編寫的由微軟開發的規范,并在這些語言可由腳本宿主編譯執行。每個ActiveX腳本語言都可以被腳本引擎執行。通常,由WScript.exe 的DLL文件接口來解析腳本,一次解析一行,所以腳本宿主可以執行這些腳本語言。 Microsoft維護兩個ActiveX腳本語言:VBScript和Jscript.
一些其他公司的的ActiveX腳本語言需要額外的安裝, VideoScript,PerlScript和LiveScript等都是很收歡迎的.
腳本語言有一些共有的特征.
1). 這些腳本語言是需要被解析后才能執行的. 腳本引擎一次一行的讀取腳本內容, 然后執行它們. WSH的執行要求轉化為本地Windows API的腳本指令調用. 解析過程要慢于編譯過程就像VB 6.0一樣, 編譯器一次性的把所有程序代碼轉換為機器代碼, 這樣代碼被執行時可以更多的節約時間.
2). 腳本語言是基于文本的。換句話說,你可以創建一個簡單的文本編輯器如記事本腳本來編寫你的腳本。缺點是,任何人都可以使用記事本閱讀你的腳本。大多數軟件的代碼會被編譯成原始二進制格式,使最終用戶閱讀代碼變的非常困難。微軟確實提供了一個加密工具(會在以后進行討論),讓您免受源代碼被窺視。
3). 腳本語言是本地化的。換句話說,你的腳本將只執行在Windows,因為WSH的本身將只執行在Windows上。于此形成對比的是Java,它可以被編譯并在任何平臺上,可以在相關的的Java虛擬機(JVM)環境中被執行。
4). 腳本語言可以很容易地進行部署。不像Visual Basic 6.0等應用程序必須要被編譯,腳本通常不要求有一堆DLL,也不必你必須有部署,注冊,等等的一系列繁瑣過程。腳本通??梢詮囊慌_計算機原封不動的復制到另一臺計算機上。
VBScript最強大之處可能就在于與Microsoft's Component Object Model的接口. 以下是摘取至微軟的一段話.
VBScript and .NET: What Does the Future Hold?
I'm often asked how the release of VB.NET and the .NET Framework will affect VBScript. After all, you don't hear much mention of "VBScript.NET!"
It's a complicated question. The easy answer is this: Microsoft invested a lot of time and money getting administrators to use VBScript, and administrators are using it. WSH will probably be included in new releases of Windows for some time to come, even if Microsoft doesn't do any further development. However, Microsoft did release a new version of WSH for Windows XP, when .NET was still under development, so it's quite possible that VBScript will have a parallel life with .NET.
Keep in mind, though, that .NET is, in many ways, a scripting language itself. It isn't compiled in the same sense that Visual Basic 6.0 applications were compiled, and new versions of Windows—starting with Windows Server 2003—will come with the .NET Common Language Runtime (CLR), essentially .NET's version of WSH. Therefore, administrators will be able to use language like VB.NET to produce easily deployed administrative scripts.
.NET makes it easier to do a lot of administrative tasks, because it exposes so much of Windows' native functionality. However, the .NET learning curve is quite a bit steeper than VBScript's, so I definitely expect administrators to stick with the easier scripting language, at least for the time being.
VBScript—and JScript even more so—has a long life ahead of it in Web browsers. Web browsers, including Microsoft Internet Explorer, can't execute client-side .NET code, leaving VBScript and JScript as the only viable options for client-side Web programming. Although that type of programming isn't the focus of this book, it demonstrates that VBScript is far from obsolete and remains a powerful, viable administrative tool.
Component Object Model (COM)
軟件開發人員一直鼓勵開發可重用的代碼。設想一下,你創建了一些檢索遠程計算機上的TCP/ IP協議設置的代碼。許多管理員可能想再次使用該代碼。那么,你如何使你的代碼提供給他們在一個易于使用的方式?
微軟的回答是COM,組件對象模型。 COM是一個規范, 描述了如何將代碼打包到一個對象,從而使他們變成獨立的,容易(相對而言)的部署,使其他開發人員使用簡單。物理上,COM對象通常是在DLL文件中實現的,其中如果你檢查Windows\system32文件夾中的內容,你應該發現COM是無處不再的!
VBScript可以完全利用COM對象。這是一個強大的功能,因為大多數的Windows的功能,和大多數其他Microsoft應用程序的功能,大都是使用COM組件注冊。電子郵件,活動目錄,Windows Management Instrumentation,Networking,注冊表等等都可以通過COM組件來操作,也就是說VBScript能做到這一切。我們會在以后大章節中為大家展示VBScript的魅力。
VBScript是甚至有創建COM組件的能力。這意味著你可以使用VBScript來創建您的IP檢索軟件,把軟件打包為一個COM組件,并分共享給其他管理員。這個腳本功能稱為Windows腳本組件。關于模塊化腳本編程和括Windows腳本組件, 我們會在教程的最后講解。
關鍵的腳本安全問題
可悲的是,微軟沒有太多的考慮到VBScript執行的后果。 Windows XP中,默認內置和開啟了所有腳本功能。 VBScript不僅可以用在有幫助的管理任務,許多惡意***和病毒都是以VBScript或另外一些ActiveX腳本語言為基礎的。
管理員在許多方面對腳本的安全威脅作出了回應
1) 刪除WScript.exe。不幸的是,這在Windows2000或更高版本下是行不通的,因為WScript.exe 是 Windows下的保護.
2) 嚴格區分VB, VBS, JS, 以及其他和WSH關聯的擴展名, 或者重新關聯這些擴展名到記事本程序上而不是用WSH直接打開. 這種方法是非常有效的.
3) 安裝有效的殺毒軟件, 檢測腳本發現威脅時會組織腳本運行.
令人遺憾的是, 為了安全禁用腳本后就意為著你不能使用登錄腳本, 不能使用其他有幫助的腳本功能. 這里推薦一個中間路線, 你可以采取只是授權腳本執行給特定的用戶, 這樣可以有效的組織******而且登錄腳本等功能也沒有缺失.
幸運的是,微軟已經有使腳本安全的一些方法了,這些我們將在腳本安全一章中討論.
總結
VBScript是許多可用的ActiveX腳本語言之一。腳本執行由Windows腳本宿主(WSH)執行,物理上由WScript.exe實現,可用于(或包含)所有32位Windows操作系統。 VBScript像其他的ActiveX腳本語言一樣,是特別強大的,因為它與COM的有著豐富接口----Microsoft's Component Object Model。 COM允許VBScript來無限擴展來執行其它功能,包括Windows操作系統的大部分功能。事實上,COM的集成設置決定了VBScript與其他所謂的腳本是不同的,如很早的MS – DOS下的批處理。
但是VBScript同樣帶來了一些安全威脅, 大家需要學會在自己的環境中處理這些問題. 微軟的這些設定導致了腳本令人遺憾的帶來了大量的病毒惡意軟件等, 使得腳本語言看起來是一種很大的威脅. 不過, 當大家對自己的環境非常了解并采用相應的措施, 腳本看起來就不再糟糕了, 反而會使大家的管理更加具有靈活性.
下一章內容
著重講解腳本的運行, 編輯腳本等. 以及一些更先進的腳本輔助和編寫工具. 我們馬上要開始真正的腳本教程了.
轉載于:https://blog.51cto.com/xrbenbeba/485224
總結
以上是生活随笔為你收集整理的VBScript教程-第一章. 脚本的定义和术语的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: SWFTools pdf2swf 参数详
- 下一篇: Asigra无代理备份:“云”数据保护的