VBScript教程-第一章. 脚本的定义和术语
最近一直很郁悶一件事, 大學(xué)畢業(yè)開始就有的一本微軟腳本指南的書到現(xiàn)在也一點(diǎn)沒看. 所以突發(fā)奇想想把它讀完, 原書為英文, 看起來稍稍有些不爽, 準(zhǔn)備順便翻譯并根據(jù)這幾年積累的那么一點(diǎn)點(diǎn)知識(shí)添加和注釋一些東西, 也當(dāng)是技術(shù)+英語(yǔ)雙雙學(xué)習(xí)了. 全書25章, 由于本人水平和精力有限, 期間出現(xiàn)的問題和漏洞大家?guī)兔χ赋鱿鹿? 多謝.
今天下午翻譯了第一章, 傳上來留個(gè)念想. 不敢保證定期更新, 但是我會(huì)盡我最大的努力來完成.
=========================萬(wàn)惡的分割線后開始正題==========================
?
第一章. 腳本的定義和術(shù)語(yǔ)
在本章中你很有可能將完成你的第一個(gè)新腳本!你將學(xué)習(xí)到Script的工作原理, 以及Script是什么, 以及如何在Windows操作系統(tǒng)中使用他. 你同樣可以學(xué)習(xí)到關(guān)鍵的安全問題, 這些將在以后的章節(jié)中詳細(xì)討論.
?
?
什么是腳本?
腳本的定義實(shí)際上不同的人有不同的看法。例如一些人將執(zhí)行的一系列計(jì)算機(jī)命令的序列定義為腳本, 包括在MS – DOS中便攜所謂腳本的批處理語(yǔ)言。這些批處理文件是多年來自動(dòng)化管理的主要方式,直至今天許多管理員很大程度上仍然依賴批處理。現(xiàn)在一些人用一些高層次的腳本語(yǔ)言編寫小程序,例如VBScript。
實(shí)際上沒有人是錯(cuò)的, 腳本其實(shí)可以定義為任何意義. 就我個(gè)人而言, 我比較傾向于后一種說法, 相信腳本應(yīng)該是用VBScript, JavaScript, 或者是其他的高級(jí)語(yǔ)言來編寫腳本語(yǔ)言.固然批處理是一種在Windows下的自動(dòng)管理方法, 但是你不應(yīng)當(dāng)對(duì)他期待太多,畢竟批處理和當(dāng)今的腳本語(yǔ)言相比還是缺乏可用性和靈活性的, 畢竟這是一個(gè)二三十年的命令行語(yǔ)言.
本次教程的目的是學(xué)會(huì)使用高級(jí)腳本語(yǔ)言編寫的小程序, 特別是VBScript.
腳本宿主
腳本的撰寫就像一個(gè)普通的文本文件. 嘗試打開一個(gè)記事本, 把下面的文本拷貝到記事本中.
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”. 請(qǐng)確認(rèn)擴(kuò)展名正確. 如果一切正確windows系統(tǒng)會(huì)自動(dòng)改變文件圖標(biāo)為下圖, 在雙擊后會(huì)顯示系統(tǒng)的SN號(hào).
現(xiàn)在大家還不需要了解這個(gè)腳本的內(nèi)容, 我們將在WMI一章中講解.我們先來了解一下腳本的宿主程序.
為什么我們雙擊這個(gè)vbs文件他就可以直接運(yùn)行, 我們可以很簡(jiǎn)單的找到答案.下圖可見VBS文件是與”Microsoft Windows Based Script Host”關(guān)聯(lián)的. 所以當(dāng)你雙擊后關(guān)聯(lián)的Script Host就會(huì)自動(dòng)啟動(dòng)來運(yùn)行指定的VBS文件. 這就像你點(diǎn)擊一個(gè)XLS或者DOC文件一樣, 會(huì)自動(dòng)啟動(dòng)關(guān)聯(lián)的Office程序來運(yùn)行他們.
那么,什么是”Microsoft Windows Based Script Host”(WSH)?這是一個(gè)內(nèi)置的Windows組件。事實(shí)上,它的一個(gè)Windows下受保護(hù)的文件,這意味著您不能刪除或移除WSH的可執(zhí)行文件,這個(gè)可執(zhí)行程序就是Wscript.exe。 WSH同樣包含在Windows Me中,在Windows98中是可選安裝組件,在NT4.0和Windows95中可通過從www.Microsoft.com/scripting上下載后增加組件。
目前大多數(shù)計(jì)算機(jī)使用的是5.7版本的WSH, 可從www.Microsoft.com/scripting上下載.
實(shí)際上VBScript以及一些其他腳本語(yǔ)言還可以由cscript.exe執(zhí)行, 這是一個(gè)更傾向于命令行窗口的宿主. 也是日常管理中一個(gè)非常有用的宿主, 在以后的章節(jié)中我們會(huì)在一些示例中使用它.
ActiveX Scripting Languages
VBScript是只是許多ActiveX腳本語(yǔ)言之一。這些語(yǔ)言編寫的由微軟開發(fā)的規(guī)范,并在這些語(yǔ)言可由腳本宿主編譯執(zhí)行。每個(gè)ActiveX腳本語(yǔ)言都可以被腳本引擎執(zhí)行。通常,由WScript.exe 的DLL文件接口來解析腳本,一次解析一行,所以腳本宿主可以執(zhí)行這些腳本語(yǔ)言。 Microsoft維護(hù)兩個(gè)ActiveX腳本語(yǔ)言:VBScript和Jscript.
一些其他公司的的ActiveX腳本語(yǔ)言需要額外的安裝, VideoScript,PerlScript和LiveScript等都是很收歡迎的.
腳本語(yǔ)言有一些共有的特征.
1). 這些腳本語(yǔ)言是需要被解析后才能執(zhí)行的. 腳本引擎一次一行的讀取腳本內(nèi)容, 然后執(zhí)行它們. WSH的執(zhí)行要求轉(zhuǎn)化為本地Windows API的腳本指令調(diào)用. 解析過程要慢于編譯過程就像VB 6.0一樣, 編譯器一次性的把所有程序代碼轉(zhuǎn)換為機(jī)器代碼, 這樣代碼被執(zhí)行時(shí)可以更多的節(jié)約時(shí)間.
2). 腳本語(yǔ)言是基于文本的。換句話說,你可以創(chuàng)建一個(gè)簡(jiǎn)單的文本編輯器如記事本腳本來編寫你的腳本。缺點(diǎn)是,任何人都可以使用記事本閱讀你的腳本。大多數(shù)軟件的代碼會(huì)被編譯成原始二進(jìn)制格式,使最終用戶閱讀代碼變的非常困難。微軟確實(shí)提供了一個(gè)加密工具(會(huì)在以后進(jìn)行討論),讓您免受源代碼被窺視。
3). 腳本語(yǔ)言是本地化的。換句話說,你的腳本將只執(zhí)行在Windows,因?yàn)閃SH的本身將只執(zhí)行在Windows上。于此形成對(duì)比的是Java,它可以被編譯并在任何平臺(tái)上,可以在相關(guān)的的Java虛擬機(jī)(JVM)環(huán)境中被執(zhí)行。
4). 腳本語(yǔ)言可以很容易地進(jìn)行部署。不像Visual Basic 6.0等應(yīng)用程序必須要被編譯,腳本通常不要求有一堆DLL,也不必你必須有部署,注冊(cè),等等的一系列繁瑣過程。腳本通常可以從一臺(tái)計(jì)算機(jī)原封不動(dòng)的復(fù)制到另一臺(tái)計(jì)算機(jī)上。
VBScript最強(qiáng)大之處可能就在于與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)
軟件開發(fā)人員一直鼓勵(lì)開發(fā)可重用的代碼。設(shè)想一下,你創(chuàng)建了一些檢索遠(yuǎn)程計(jì)算機(jī)上的TCP/ IP協(xié)議設(shè)置的代碼。許多管理員可能想再次使用該代碼。那么,你如何使你的代碼提供給他們?cè)谝粋€(gè)易于使用的方式?
微軟的回答是COM,組件對(duì)象模型。 COM是一個(gè)規(guī)范, 描述了如何將代碼打包到一個(gè)對(duì)象,從而使他們變成獨(dú)立的,容易(相對(duì)而言)的部署,使其他開發(fā)人員使用簡(jiǎn)單。物理上,COM對(duì)象通常是在DLL文件中實(shí)現(xiàn)的,其中如果你檢查Windows\system32文件夾中的內(nèi)容,你應(yīng)該發(fā)現(xiàn)COM是無處不再的!
VBScript可以完全利用COM對(duì)象。這是一個(gè)強(qiáng)大的功能,因?yàn)榇蠖鄶?shù)的Windows的功能,和大多數(shù)其他Microsoft應(yīng)用程序的功能,大都是使用COM組件注冊(cè)。電子郵件,活動(dòng)目錄,Windows Management Instrumentation,Networking,注冊(cè)表等等都可以通過COM組件來操作,也就是說VBScript能做到這一切。我們會(huì)在以后大章節(jié)中為大家展示VBScript的魅力。
VBScript是甚至有創(chuàng)建COM組件的能力。這意味著你可以使用VBScript來創(chuàng)建您的IP檢索軟件,把軟件打包為一個(gè)COM組件,并分共享給其他管理員。這個(gè)腳本功能稱為Windows腳本組件。關(guān)于模塊化腳本編程和括Windows腳本組件, 我們會(huì)在教程的最后講解。
關(guān)鍵的腳本安全問題
可悲的是,微軟沒有太多的考慮到VBScript執(zhí)行的后果。 Windows XP中,默認(rèn)內(nèi)置和開啟了所有腳本功能。 VBScript不僅可以用在有幫助的管理任務(wù),許多惡意***和病毒都是以VBScript或另外一些ActiveX腳本語(yǔ)言為基礎(chǔ)的。
管理員在許多方面對(duì)腳本的安全威脅作出了回應(yīng)
1) 刪除WScript.exe。不幸的是,這在Windows2000或更高版本下是行不通的,因?yàn)閃Script.exe 是 Windows下的保護(hù).
2) 嚴(yán)格區(qū)分VB, VBS, JS, 以及其他和WSH關(guān)聯(lián)的擴(kuò)展名, 或者重新關(guān)聯(lián)這些擴(kuò)展名到記事本程序上而不是用WSH直接打開. 這種方法是非常有效的.
3) 安裝有效的殺毒軟件, 檢測(cè)腳本發(fā)現(xiàn)威脅時(shí)會(huì)組織腳本運(yùn)行.
令人遺憾的是, 為了安全禁用腳本后就意為著你不能使用登錄腳本, 不能使用其他有幫助的腳本功能. 這里推薦一個(gè)中間路線, 你可以采取只是授權(quán)腳本執(zhí)行給特定的用戶, 這樣可以有效的組織******而且登錄腳本等功能也沒有缺失.
幸運(yùn)的是,微軟已經(jīng)有使腳本安全的一些方法了,這些我們將在腳本安全一章中討論.
總結(jié)
VBScript是許多可用的ActiveX腳本語(yǔ)言之一。腳本執(zhí)行由Windows腳本宿主(WSH)執(zhí)行,物理上由WScript.exe實(shí)現(xiàn),可用于(或包含)所有32位Windows操作系統(tǒng)。 VBScript像其他的ActiveX腳本語(yǔ)言一樣,是特別強(qiáng)大的,因?yàn)樗cCOM的有著豐富接口----Microsoft's Component Object Model。 COM允許VBScript來無限擴(kuò)展來執(zhí)行其它功能,包括Windows操作系統(tǒng)的大部分功能。事實(shí)上,COM的集成設(shè)置決定了VBScript與其他所謂的腳本是不同的,如很早的MS – DOS下的批處理。
但是VBScript同樣帶來了一些安全威脅, 大家需要學(xué)會(huì)在自己的環(huán)境中處理這些問題. 微軟的這些設(shè)定導(dǎo)致了腳本令人遺憾的帶來了大量的病毒惡意軟件等, 使得腳本語(yǔ)言看起來是一種很大的威脅. 不過, 當(dāng)大家對(duì)自己的環(huán)境非常了解并采用相應(yīng)的措施, 腳本看起來就不再糟糕了, 反而會(huì)使大家的管理更加具有靈活性.
下一章內(nèi)容
著重講解腳本的運(yùn)行, 編輯腳本等. 以及一些更先進(jìn)的腳本輔助和編寫工具. 我們馬上要開始真正的腳本教程了.
轉(zhuǎn)載于:https://blog.51cto.com/xrbenbeba/485224
總結(jié)
以上是生活随笔為你收集整理的VBScript教程-第一章. 脚本的定义和术语的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: SWFTools pdf2swf 参数详
- 下一篇: Asigra无代理备份:“云”数据保护的