如何使用VMware vSphere PowerCLI?

日期: 2009-10-26 作者:Hal Rottenberg翻译:李哲贤 来源:TechTarget中国 英文

尽管我要再次申明乏味的VMware管理任务是一项耗时和易出错的工作。但是vSphere PowerCLI的扩展,可以帮助管理员完成一些控制工作。在这篇文章中,TechTarget中国的特约虚拟化专家Hal Rottenberg将探究VMware的这个脚本工具是如何帮助我们自动地完成管理任务的。   作为一名拥有多年经验的系统管理工程师,我认为,管理员的主要工作(除了那些没有显示屏也不需要人员值守的环境)就是通过移动鼠标或者在键盘上键入指令来完成人机交互的过程。

您可能此时会有疑问,这有什么问题吗?我要告诉你的是,这会导致很多的问题发生。首先,阐明几件作为VMware管理员都会面对的事情。 我们的……

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

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

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

微信公众号

TechTarget微信公众号二维码

TechTarget

官方微博

TechTarget中国官方微博二维码

TechTarget中国

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

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

尽管我要再次申明乏味的VMware管理任务是一项耗时和易出错的工作。但是vSphere PowerCLI的扩展,可以帮助管理员完成一些控制工作。在这篇文章中,TechTarget中国的特约虚拟化专家Hal Rottenberg将探究VMware的这个脚本工具是如何帮助我们自动地完成管理任务的。

  作为一名拥有多年经验的系统管理工程师,我认为,管理员的主要工作(除了那些没有显示屏也不需要人员值守的环境)就是通过移动鼠标或者在键盘上键入指令来完成人机交互的过程。您可能此时会有疑问,这有什么问题吗?我要告诉你的是,这会导致很多的问题发生。首先,阐明几件作为VMware管理员都会面对的事情。

  • 我们的工作需要非常的细致
  • 重复工作会导致人为错误发生,而且
  • 无论您的输入速度多么快,计算机总是更快

  我想以上的这些情况是大家都认可的事实,无论在什么情况下,作为一名计算机用户都要面对的操作。和我们需要完成的任务是什么而无关,对吧?接下来让我们回到之前的假想环境来说明为什么这个问题会困扰我们。需要指出的,最关键的一点是由于自动化或者是缺少自动化而引起的。

  为什么是自动化?

  人类创造了计算机用于解决问题。通常讲,您的工作是基于其他的开发者进行的(开发者很多时候也是问题的创造者,他们发现了问题,但没有让问题一直遗留)。开发人员希望通过提供底层的指令系统来解决问题,同时提供给上层使用者一个更高层的和计算机交互的接口和工具。我知道这些都是最基本的理论,请跟着我的思路继续。

  有一个非常流行的设想:系统管理员所需要的,仅仅是最上层的接口程序,所有的内脏都隐藏在那些漂亮的图形界面接口(GUI ,graphical user interfaces )后面。例如,让我们以vSphere client来举例说明。我喜欢这个应用,因为它可以很好的工作并解决问题。但是如果您需要改变十二台虚拟机的端口设置时我们需要怎么完成?让我来为您做一道算术:每台虚拟机的设置需要点击六次鼠标,总共需要重复这个无聊的鼠标点击动作72次。这种无聊的重复过程可能并且经常会导致人为错误的发生。无论您点击得有多快,都需要有您的眼睛跟踪GUI控制界面的时间和通知您的大脑把鼠标移动到正确地点的时间。所有的这些工作如果某次点击出现了几个象素的偏差,可能会使您选择一个错误的网络。

  我想说到这里您应该明白我想说什么了。我有更好的解决办法,当然,那就是通过PowerCLI 实现。

  什么是PowerCLI

  让我们来假设,此刻,您不是什么Perl语言的狂热爱好者(开个玩笑)。总之,如果您现在用Perl来管理您的vSphere环境,您可能比较难以想象自动化,在使用脚本语言时的重复过程,这当然很好。我将呈现给您的将是一种简短和便捷的操作方式,所以请继续往下读。

  在开始讲述PowerCLI之前,我们必须首先了解关于PowerShell的一些内容。PowerShell是一种由微软设计开发的,面向对象的脚本语言程序和命令行shell,用于取代VBScript和以前的CMD.EXE程序;它是面向对象的(什么是对象,稍后讲述);它是一种和其他面向对象系统(如:虚拟架构)建立连接的非常有效的方式。一台虚拟机就是一个对象,也是一个主机。和VBScript不同,PowerShell是一个shell,也就是说您可以运行它并且直接通过它发布命令。

  但是,更重要的是,PowerShell是一个脚本语言。脚本语言和程序语言类似,我们通过文本的形式提供指令,然后计算机运行它并完成您需要的工作。脚本语言又与程序语言不完全相同,脚本语言相比而言是一种更高层次的计算机交互方式,所以程序员可以较少地关注那些理论上的概念。换句话说,脚本语言位于程序语言和图形界面之间。同样的,它也是两者之间的粘合剂,或者是在一个复杂的IT系统环境中的位于两者之间的中间层。(PowerShell可以比作是饭后的甜点,或者是地板上打得蜡。)

  好了,背景故事已经讲了不少!PowerCLI是PowerShell的扩展。PowerCLI 内部带有165个cmdlets(读作command-lets),它们每一个都是一个独立的可以分解为字节大小的vSphere管理任务。Cmdlets使用了一些简短的逻辑词条的名称,以便于人们学习和使用。接下来让我来简单展示一下。

  Show me the money

  让我们先来简短地通过这个核心短语来理解“面向对象”的含义。对象指的是像汽车、房子和虚拟机等等这样的物品。对象是由其他部分所组成的,例如方法和属性。举例来说,方法指的是“加速汽车”,“打开房门”和“启动虚拟机”这样的操作。属性指的是:“320马力”,“5个房门”和“2GB内存”这样的一些问题。好的,现在是否依然还跟我的思路继续?

  PowerCLI的一个简单的例子就是,Get-VM cmdlet,一个事实上非常有用的命令。下面是这个命令下达后的执行情况:

PowerCLI

点击图片本身放大

  或许您已经猜到,如果不先跟vSphere环境连接并且通过认证,是无法和vSphere交互的。这个过程是由Connect-VIServer cmdlet所掌控的。这里我不再演示命令执行后的情况,这个cmdlet将提示您输入认证证书。

  在连接建立之后,我输入Get-VM命令而不带任何参数。“Get”在这个短语中是动词的角色,它的意思是从某处获得某个对象。“VM”是cmlet命令中的名词部分,当然它指代的就是所面对的虚拟机。结果理解起来相当的简单,当然,这也是PowerShell的标志。您可以看到一个带有标题的列表在屏幕上显示,如果您曾经在虚拟机环境中工作过,我想这些参数特性都是一目了然的,所以我不再进一步对该命令的细节做说明。

  对于每一行文字而言,它不仅仅代表字面的意思,更多的是表示一个对象。在这个例子中,我们所讨论的对象就是虚拟机。但是PowerShell的这个规制还适用于任何其他对象,当我们讨论FileInfo时对象是文件系统,或者是虚拟机,也可能是主机服务器或任何其他的东西。

  最后所提到的,在某些情况对象可以指代任意东西,这个课题确实非常大,所以我对它的讲述到此为止。同时,我希望您已经获得关于PowerCLI足够多的内容,使您已经产生兴趣并将继续学习使用它。我也希望你可以同意我的观点:关于自动化是将来唯一的发展方向。所以如果您和您的小组还没有搭上这个潮流班车,我想现在这是个很好的切入契机。我接下来的系列将继续讲述有关内容,所以请保持关注。

  下载PowerShell,访问微软的PowerShell站点。同样,要获得PowerCLI,请访问VMware的PowerCLI站点

翻译

李哲贤
李哲贤

TT虚拟化特约作者

相关推荐