最近一直很郁闷一件事, 大学毕业开始就有的一本微软脚本指南的书到现在也一点没看. 所以突发奇想想把它读完, 原书为英文, 看起来稍稍有些不爽, 准备顺便翻译并根据这几年积累的那么一点点知识添加和注释一些东西, 也当是技术+英语双双学习了. 全书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教程-第一章. 脚本的定义和术语相关推荐

  1. Etcd教程 — 第一章 Etcd简介、Etcd单机安装

    Etcd教程 - 第一章 一.Etcd介绍 1.1 介绍 1.2 etcd特点 二. Etcd单机安装 2.1 安装方式 2.1.1 yum install etcd 2.1.2 通过系统工具安装et ...

  2. 北大青鸟c语言课后答案,北大青鸟C语言教程--第一章 C语言基础.ppt

    <北大青鸟C语言教程--第一章 C语言基础.ppt>由会员分享,可在线阅读,更多相关<北大青鸟C语言教程--第一章 C语言基础.ppt(20页珍藏版)>请在人人文库网上搜索. ...

  3. matlab里面atn是什么意思,matlab教程第一章

    <matlab教程第一章>由会员分享,可在线阅读,更多相关<matlab教程第一章(63页珍藏版)>请在人人文库网上搜索. 1.第1章 矩阵及其基本运算MATLAB,即&quo ...

  4. 乐行学院RabbitMQ学习教程 第一章 RabbitMQ介绍(可供技术选型时使用)

    乐行学院RabbitMQ学习教程 第一章 RabbitMQ介绍 RabbitMQ介绍 1.RabbitMQ技术简介 2.RabbitMQ其他扩展插件 2.1监控工具rabbitmq-managemen ...

  5. javascript进阶教程第一章案例实战

    javascript进阶教程第一章案例实战 一.学习任务 通过几个案例练习回顾学过的知识 通过练习积累JS的使用技巧 二.实例 练习1:删除确认提示框 实例描述: 防止用户小心单击了"删除& ...

  6. 第一章:HBase定义

    HBase学习 第一章:HBase定义 文章目录 一.HBase定义 二.HBase数据模型 1.HBase逻辑结构 2.HBase 物理存储 3.数据模型 1).Name Space 2).Regi ...

  7. 乐行学院Redis5学习教程 第一章redis5的安装

    乐行学院Redis5学习教程 第一章redis5的安装 1.安装虚拟机 2.centeros下载 3.vmware安装centeros 4.vmware安装centeros设置IP 5.安装redis ...

  8. laravel教程 第一章安装laravel

    #laravel教程# ##第一章 安装laravel## ###前言 ### 有很多人,都在纠结于自己学什么框架,用什么框架.在这里我想告诉你,框架都是死的,但是人是活的,只要你明白的框架的基本原理 ...

  9. 计算机中的数制与编码教程,第一章计算机中的数据和编码教程.doc

    第一章计算机中的数据和编码教程 第一章 计算机中的数据和编码 1.1计算机中的数制 1.2计算机中数的表示 1.3计算机中的编码 1.1 计算机中的数制之进位计数制 进位制: 按照进位的方法进行计数的 ...

最新文章

  1. python的可变对象和不可变对象
  2. python--数据类型bytes
  3. RT2870 5370等移植(ARM,X86)
  4. 傻孩子的故事--写给为编程而努力的HiccDS
  5. php new self()关键字的用法
  6. C语言试题七十二之请编写函数判断三角形的类型,并输出其面积和类型。
  7. python围棋程序在屏幕上找棋盘_用C语言编程 在屏幕上显示围棋棋盘
  8. 去超市一定要存包吗_大桥路某超市收银时出现多收现象!大家付完钱一定要核对...
  9. 乔布斯不在了,世界一大步,苹果一小步。
  10. JS判断用户手机是IOS还是Android
  11. 安装 samba 记录
  12. 阶段3 2.Spring_04.Spring的常用注解_7 改变作用范围以及和生命周期相关的注解
  13. Wowza服务器系列(5):使用rtsp协议向wowza推流的wowoza配置方法
  14. 等保三级核心-网络安全
  15. 射频拉远单元RRU与数字光纤直放站分析比较
  16. OpenHarmony2.0 一站式编译烧录Hi3516标准系统
  17. 全智通A+常见问题汇总解答—A+打印本次派工单,结果显示所派工项目
  18. 怎么把中文用户名改成英文?
  19. 38、Java——汽车租赁系统(JDBC+MySQL+Apache DBUtils)
  20. 第四周小组作业:WordCount优化

热门文章

  1. 用于python环境下的数据操作_数据分析(一):环境搭建,以及初步操作文件
  2. 快速排名系统询火星推荐_搜狗网站快速排名系统 - 新站权重如何快速提升
  3. android can为啥能发收不到数据_拼多多登录时手机收不到短信验证码怎么办
  4. Matlab实用程序--图形应用-填充图
  5. uboot启动流程概述_关于RISCV启动部分的思考~
  6. 黄山学院计算机课,黄山学院非计算机类专业计算机课程教学管理规定
  7. php远程开机ubuntu,Ubuntu系统远程开机操作实例
  8. 《STL源码剖析》学习--STL体现的思想
  9. 【深度学习】锐化滤波器核 与 边缘检测核
  10. Sharding-JDBC(一)简介