拿VMware的PowerCLI与微软的PowerShell作比较似乎是太可能,因为前者需要后者先安装好,且它仅是一个针对核心PowerShell环境的供应商指定附加物。
某人仅仅基于其脚本功能而去选择一个虚拟化平台也是不可能的。因此,我这里的比较并不是为了设置一个让两家公司竞争的恶意比赛,我将告诉你各个方案中我喜欢和不喜欢的地方。希望我可以解释两家公司提高其脚本产品的方法。让我们从微软开始吧。
微软的PowerShell
关于SCVMM,我喜欢虚拟化管理的一个方面是其内置的观察脚本窗口。这就像一个脚本记录器,它赋予你如同PowerShell脚本一样的抓取管理行为的能力。当你正在SCVMM内执行一个把一个虚拟机转移到另一个Hyper-V主机的转移任务时,这是这一点的很好举例。在这个向导结束时,将出现一个“查看脚本”按钮,显示一个脚本需要的确切PowerShell命令。
图1
从某种程度上讲,这完全是一个来自于SCVMM研发方式的福音。最初,SCVMM是由PowerShell管理的,后来一个图形管理壳的研发围绕它开展起来,因此Windows管理员并不需要了解它背后的PowerShell。
对于微软来说,揭示在后台运行的PowerShell并不难。虽然这不利于管理员使用每个循环、错误检查以及日志的变量来编写PowerShell脚本,但是这对接触PowerShell的新手们来说是非常有用的,至少可以让他们克服在学习如何通过基本的PowerShell命令集来执行普通的管理任务时的困难阶段。
目前,Hyper-V还没有一个官方的命令集,但是James O'Neill创建了一个集合并存储在Codeplex网站。O'Neill采用了应用程序接口并编写了基于此的命令集。随着SCVMM 2012的发布,命令集的数量将会显著增加,人们在SCVMM中可以做的任务量通常也会大幅增加。
VMware的PowerCLI
VMware已经大步前进地在PowerShell中增加了许多新功能,它被称为PowerCLI。在连续的发布中,公司已经显著增加了产品中命令集的数量,差不多有250个命令集。之前的补充缺乏控制ESX主机iSCSI堆栈的命令集,虽然最近的vSphere4.1版本已经填补了这一缺口。
但仍然到处存在奇怪的漏洞。例如,没有任何有意义的有关VMware分布式虚拟网络切换器的命令集。看来公司赞同将其“Host Profiles”功能作为新创建的ESX主机的主要配置工具。购买Enterprise和SKU的客户有权使用分布式虚拟网路切换器和Host Profiles。
未来版本中会有新的部署方法,它们强调会在部署新的ESX主机时在PowerCLI上使用host profiles。值得一提的是,虚拟化专家Luc Dekens已经研发出考虑到DvSwitches管理的功能。如此说来,PowerCLI在VMware社区的主要用途是报告和检查vSphere环境。诸如virtu-al.com的“健康检查”脚本也已经非常受欢迎。
VMware的软件开发包就是一切。这个极其丰富的接口让访问人几乎可以执行每一个想要的行动,无论是在主机上还是vCenter管理服务器上。这与微软唯一官方支持的命令集只针对SCVMM形成了对比。VMware和微软之间存在一些共同之处:都对其管理程序所谓的“免费”版本提供极其有限的PowerShell支持。对于客户可能得到一个免费的管理程序,并用命令行工具管理它而不是为这个管理块支付溢价这一点,两家公司都持谨慎态度。
vCenter自身没有将PowerCLI直接集成到vSphere客户端。想要寻找一些将管理“记录”成PowerCLI代码的方法,你可以查看VMware Onyx,它是一个放置在vSphere客户端和vCenter之间的免费设备,它将行为以原始的PowerCLI SDK代码形式输出。附带说一下,它也把行为以适合VMware的Orchestrator的Java脚本格式输出。
Onyx的输出可能会有点让人不知所措,但请不要被吓到。通过一个图形用户界面和在任务完成之后收集的PowerCLI代码,我们用于执行管理任务的方式更为友好。人们应该利用PowerGUI的前端以及可扩展其功能的各种PowerPacks。PowerGUI对包括活动目录在内的种类繁多的管理任务有效,但是从虚拟化的角度来看,为VMware的vSphere、Citrix的XenServer、Microsoft的HyperV、虚拟磁盘分析、HP的虚拟连接以及Quest的vWorkspace准备了PowerPacks。
图2
与此同时,VMware正在试图将PowerCLI支持扩展到其他技术,这也是微软已经准备要在今后做的事情。这里有一个PowerCLI作为VMware的虚拟桌面解决方案,称为View,但是这个实施方案与vSphere PowerCLI的实施大不相同。感觉起来它更像一个DOS命令行系统而不是PowerShell,并且它允许流水线技术以及查询对象的属性和特性。截至目前,虽然像虚拟机站点恢复管理这样的技术不具有PowerCLI,但是它很有可能出现在虚拟机的雷达屏幕上。
对于那些没有生活在Windows世界的人来讲,PowerShell和PowerCLI已经在系统管理世界引起了巨大冲击波。但是基于Linux的脚本编写者也许会觉得遭受了冷落。VMware提供了Perl语言,而微软没有,但这是指日可待的。
相似的老版CLI和远程CLI似乎也正在消亡,就像VMware到vCLI和vCLI设备的“ESX”命令行端口一样。现在,它们想要一个中间步骤,想让VMware客户对老版“服务控制台”环境的依赖。现在,似乎PowerShell和PowerCLI为为可预见的未来规定系统管理员的休息场所。
【编辑推荐】