使用脚本程序管理Windows网络 第五部分:跨过一道坎

日期: 2008-09-27 作者:Mitch Tulloch翻译:曾少宁 来源:TechTarget中国 英文

当学习用脚本来管理Windows 网络时,你必须注意在此过程中出现的、被Mitch Tulloch称为“坎”的难关。以下是就如何攻克难关的技巧学习,原文发表在WindowsNetworking.com. 在这一系列的前几章中,我们开始探索“我们可以用Win32_NetworkAdapterConfiguration 做什么”。这个强大的WMI级别有61个属性和41种方法,可用于获取和修改Windows计算机的TCP/IP网络设置。 为了说明这个类的功能,我们采取了我们在第一和第二章中开发的示例脚本,并利用MSDN上关于这个类的信息,我们定制我们原来的脚本使它做了一些不同的事。

具体来说,我们利用……

我们一直都在努力坚持原创.......请不要一声不吭,就悄悄拿走。

我原创,你原创,我们的内容世界才会更加精彩!

【所有原创内容版权均属TechTarget,欢迎大家转发分享。但未经授权,严禁任何媒体(平面媒体、网络媒体、自媒体等)以及微信公众号复制、转载、摘编或以其他方式进行使用。】

微信公众号

TechTarget微信公众号二维码

TechTarget

官方微博

TechTarget中国官方微博二维码

TechTarget中国

电子邮件地址不会被公开。 必填项已用*标注

敬请读者发表评论,本站保留删除与本文无关和不雅评论的权力。

当学习用脚本来管理Windows 网络时,你必须注意在此过程中出现的、被Mitch Tulloch称为“坎”的难关。以下是就如何攻克难关的技巧学习,原文发表在WindowsNetworking.com.

在这一系列的前几章中,我们开始探索“我们可以用Win32_NetworkAdapterConfiguration 做什么”。这个强大的WMI级别有61个属性和41种方法,可用于获取和修改Windows计算机的TCP/IP网络设置。

为了说明这个类的功能,我们采取了我们在第一和第二章中开发的示例脚本,并利用MSDN上关于这个类的信息,我们定制我们原来的脚本使它做了一些不同的事。具体来说,我们利用之前修改网络适配器IP地址的脚本,并将它定制成一个新的脚本,它将禁用在所有绑定和激活了TCP/IP的网络适配器上TCP/IP的NetBIOS(NetBT)。

我们需要继续更深入地探索这个强大的WMI类,而且我们在接下来的几篇文章中将对它继续进行分析。但在做这个之前,让我们先来谈谈这个“坎”。

所谓的坎

在我开始写这个关于使用脚本管理Window网络的系列文章时,我收到了读者们给我的邮件。在所有这写读者的邮件中都问到一个简单的问题:“我应该如何学习脚本呢?”我的第一个反应总是给提问者们指出若干的资源,包括TechNet上的文章、不同的书、脚本新闻群组等等。当然,当我考虑到这个问题的时候,就好像是要回答某人关于如何成为一个法国烹饪专家一样。“这是一些关于不同的烹饪学校、烹饪书目和网站。开始学习吧。”这样的回答可能对于那些有主动性和自律性学习技巧的人有所帮助,但是它也涉及到另外一个更有趣的问题:为什么有些人在开始学习这个技巧时遇到那么多问题呢?

我也曾经尝试过成为一名美食厨师,下面这些就是我所做的一些事情:

  • 我在当地的一个二手书店里买了一堆旧的Gourmet Magazine 的期刊

  • 我开始买各种异国风味的作料,如香料、五香料和不同的油等等

  • 我选择了一个听起来很好吃的Carrot Ginger Soup Frog食谱,然后买了所有需要的作料。(Frog是以饭店的主厨创造的汤名命名的招牌;i.e.汤里面并没有青蛙)。

  • 我邀请了几位女性劝导一起吃晚饭,并且我准备在晚餐上给与她们这个烹饪奇观般的美食惊喜。(请注意我是请了几位朋友而不是一位。如果你很幸运的话,有时候你应该使用撒网而不是下钩。)

  • 一起吃晚饭的那天到了,我开始第一次烹饪这道著名的汤。之前我从没有练习过的。

结果是怎么样的呢?汤散得到处都是,炉灶上、墙上和天花板上。而且弄脏的餐具锅盘堆得老高。我也同样不走运——对于我和我的朋友而言,它尝起来一点都不美味。到底是怎么了呢?有很多的原因。特别是:

  • 我是从一个过高的水平要求上开始的,尝试准备一件需要很大基本技能的工作,但都还没有掌握好这些技能。

  • 在投入到“生产环境”之前,我也没有很好地测试我的创作。

  • 我还没有理解学习一个概念和学习一种技能的区别。

  • 我都也没有很认真地将学习一些概念,更别提技能了

到底应该选择哪种途径来替代我原先所用的那种呢?

  • 先在本地的社区俱乐部上一个法式餐的基本课程。

  • 在尝试做其他更难的之前先学习做一个简单的白调味汁。

  • 在读像Gourmet 般的高水平刊物之前先循序渐进地学习新的烹饪术语。

  • 在我进行实验和原创之前要进行反复的练习。

  • 寻找其他的方法来吸引约会,比如学习自我推荐。

那么这跟学习脚本有什么关系呢?首先,这样一个有点幽默的例子能让你有个好心情来听讲,比如现在我就能让你开始关注于我所要讲的了。几乎所有想了解如何写脚本的Windows管理员都会在学习的路上遇上这个我称之为“坎”的问题。因为有太多可以很容易学懂的概念,所以大脑就开始停歇下来时这个坎就出现了。这是因为概念不是在一个单独的位置存在的,而是相互关联的。例如,除非你明白了什么是方法,否则你不能真正理解什么是属性。属性和方法都是在类的上下文中才能被理解的。类必须先被实例化成对象,然后才可以有属性和你可以读和操作的方法。听起来有点像是说教科书内容,对吧?其实,那是因为它就是教科书中的内容。

 “为什么我不能只是学习脚本?为什么一定要学习所有这些概念和术语?”那么,为什么你必须学会区别白色和棕色的调味汁呢?或者为什么要知道酱汁有四种基本类型:果泥状 ,稀少状,淀粉状和乳液状?又或者是要知道掺油面粉糊是调味酱、浓汤、etouffe和白色和棕色这两种调味汁的基本组成?同时,为什么我需要了解调味酱的历史?因为从长远来看,除非你了解这些基本概念,否则你将不会取得任何进展,因为它们是大多数法国烹饪的基本组成。

另一方面,在现实世界中我们的大多数人(比如,我们这些不想成为专业厨师的)没有时间,金钱或耐心全日制地参加一个法国烹饪学校,在学习如何煎猪肉排之前花费开始的6几个月的时间一次又一次地做基本的调味汁。我知道,在过几个星期后我将感到厌倦无聊,并决定寻找一个不同的职业。这个跟学习脚本是一样的道理的:作为一个繁忙的网络管理员,我不能花三年的时间学习每一个与任何Windows网络的WMI类相关联的属性和方法。或者是完全精通地学习VBScript语言的语法的每一个方面。我在大学一年级时就已经花了足够多的时间学习Fortran 语言了,一遍又一遍地编程序来列印出前十平方、前100质数、前1000个 Fibonacci数字等等。因此,考虑到我们有限的时间、金钱和耐心,再加上学习大量的关于Windows的脚本编写的相互关联的概念确实存在不少的困难,像我们这样的一般的管理员要怎么样才能攻克难关从而继续学习脚本编写呢——它真的有用吗?

攻克难关

很显然,对于这个问题并没有很好的答案,但下面是我所找到的有用的东西。这些也是曾经在我的学习过程中起到有所帮助的:

1. 从小处着手。一步到位并不是一个很好的开端,不管是对于学习法国烹饪还是编写脚本都是这样。所以,如果你已经定下目标要学会如何写一个脚本去为一个域中的OU结构查询Active Directory并在一个HTML页面上显示这个结构,而且要在一个星期内学完编写这个脚本所需要的知识,那么你这个目标可能真的高了,或者至少你比我聪明很多。而你最可能会做的是用Google在网上搜索一个功能类似的脚本,然后尝试定制这些脚本以满足你的要求(这就是你做的全部),但这只是学习的一个方面。另外,你最终可能会以一个复杂到你根本不能完全理解的脚本而告终。

2. 专注于编写脚本的特定领域。我自己最大的一个弱点是,我想要了解一切的一切,并且是马上学会。所以,当我第一次想了解如何写脚本时,我一开始就尝试从头到尾地阅读整本的 VBScript语言参考。不用说,这是枯燥无味的阅读,所以在读到大约四分之一的的时候我放弃了。更好的做法是关注于脚本编写的一个特定领域,如脚本化TCP/IP网络的任务,这也是这一系列文章的重点。一旦你掌握了这个(一个不小的)领域的脚本,然后你可以转到另一个重点领域,并尝试掌握它等等。

3. 花一些时间去学习基础知识。集中在一个主题方面是一个很好的做法,同时也很重要的是学习基础知识。要学习如何使用运行参数输入信息到一个脚本。要学习如何处理简单的错误。要学习如何以可读的方式显示结果。要学习一些简单的select语句的语法。要学习不同的变量类型。学习一些关键的WMI类,并学习每个类的几个有用的属性和方法。等等。你不必成为所有这些领域的专家,但是为了编写一个适当的脚本,你必须足够的了解各个方面的知识,而不仅仅是脚本的片段。

4. 用笔记记下所学的东西。在很长一段时间(令人尴尬的长),因为所涉及到的一些概念,我对学习脚本编写的遇到很大的难题。正如你可能已经从我之前说的大学里学习Fortran的例子中猜到我在过程语言编程的日子里学习计算机编程的。这带来的后果是,由于根深蒂固的过程编程思想导致我很难转变到面向对象的编程,而我们知道当VBScript从 Visual Basic剥离时,面向对象编程(对于Windows管理员)就开始流行了。因此在很长一段时间里,我被面向对象术语所困扰,如对象、属性、方法和类等等,这成为了我学习脚本编写的一个大障碍(坎)。当然,我可以拿一个别人写的脚本,而且(如果它足够简单)我就可以或多或少地弄清楚它如何运行的,并能够对它进行一些定制。但是MSDN于我就像希腊语一样(这里没有攻击希腊的意思)而WMI对我来说是完全的谜。这种状况直到我开始记笔记才有所改变。有一天,我写下了一个简单的句子:“属性是你可以读取的东西,而方法是你是可以做的”,突然间难关一跨而过,我攻克了这个问题。其他的概念开始迅速触类旁通,因为它们都是相互关联的;一旦你将其中几个给解决了,其余的开始迅速很快得到了解决。

5. 收集有用的学习资源,并利用它们。如果你找到一本关于脚本的好书,购买下来然后从头到尾地阅读,做完其中的练习。在TechNet Script Center上也有大量的关于脚本的资源,在以后的这个系列的几章中我将重点指出一些这方面的资源。还有其他资源包括课程(包括教师主导和自定进度的)、讨论组等等。那里有几乎所有方面的关于脚本学习的资源,但关键是要很好的利用其中的一些并且你就会有所收获。包括现在这些文章也是。

6. 练习、练习、反复地练习。学习任何技能都需要极大的耐心。事实上,我仍然不能做出象样的没有稠状的白色调味汁!同样的,学习脚本也一样:熟能生巧。在前进的道路上总有各种各样的难关,我们需要采取决心和毅力来克服它们。而且一般来言,比起编写少量又长又复杂的脚本,通过编写几百个短脚本会让你将会学到更多。因此,让自己以做一系列短期的练习为目标,并且尽自己最好的方式来学习。

7. 学习会变得很有趣的。最后,我不知道你是否一样,但是我在乐趣中学习是最好的。如果你有一些网络的管理任务,而且你认为使用脚本可能会让管理容易些,那么这就可能是你的一个学习的动机。另一方面,如果你真的忙(同时不是网络管理员),那么如果你请别人给你写脚本的话可能是最容易的。但是,如果你把接触脚本编写作为一种新的爱好享受,类似高尔夫球,比起你将它作为一个额外的工作清单看待,你可能会学习更快,并且能够做比你学到的东西更多的事。就像打高尔夫球一样,能与别人一起完成是最愉快的,因此,看看你的一些IT职业的朋友或同事是否也有兴趣玩一下脚本游戏。向他人分享你正在学习的东西会能让学习变得更加有趣。

结论

我写这篇文章的原因是我意识到一些读者仅仅读了前面四篇文章后就可能遇到了一些难关。希望我在这里所说的能够帮助你克服阻碍你继续学习的问题。在下一章中,我们将重新回去探索Win32_NetworkAdapter Configuration类,同时看看我们该如何对它进行操作,当然我们将要学习一些新的概念同时巩固前面所学习的内容。此外我们还要学习更多的VBScript语法并探讨一下我们怎么让我们的脚本变得更简练和实用。然后我们还要探索一下其他的一些WMI类,最后是一些高级脚本的主题,比如替代证书(alternate Credentials)、远程脚本、COM对象和WSF脚本等等。我们最后还介绍几个很好的脚本编写的工具,但是重要的是在学习一些捷径之前你要先学好基础的东西,因为它能让你更深刻的理解这个问题,从而使你对自己的技术更有信心。我还会试着给你提供一些练习让你独立完成,如果你真的想学好脚本编写,你就必须真的动手去做,而不是只是看上一眼然后就说: “我懂了。”毕竟,实践出真知。

作者

Mitch Tulloch
Mitch Tulloch

Mitch Tulloch是一个作家、培训师和Windows服务器操作系统、IIS管理、网络故障修复和安全方面的专业顾问。他已经写了15本书,其中包括:Microsoft Encyclopedia of Networking (Microsoft Press),Microsoft Encyclopedia of Security (Microsoft Press),Windows Server Hacks (O'Reilly),Windows Server 2003 in a Nutshell (O'Reilly),Windows 2000 Administration in a Nutshell (O'Reilly),and IIS 6 Administration (Osborne/McGraw-Hill)。Mitch居住在加拿大的Winnipeg,你可以他的网站www.mtit.com查到更多关于他的书的信息。

翻译

曾少宁
曾少宁

TechTarget中国特约技术编辑,某高校计算机科学专业教师和网络实验室负责人,曾任职某网络国际厂商,关注数据中心、开发运维、数据库及软件开发技术。有多本关于思科数据中心和虚拟化技术的译著,如《思科绿色数据中心建设与管理》和《基于IP的能源管理》等。

相关推荐