PowerCLI,即VMware vSphere PowerCLI 是一款功能强大的命令行工具,可自动执行 vSphere 的各方面管理,包括主机、网络、存储、虚拟机、客户操作系统等等。 PowerCLI 作为 Windows PowerShell 插件分发,包括超过 150 个 PowerShell cmdlet,以及文档和示例。 PowerCLI 将 vSphere 平台与 Windows 和 .*-NET 无缝地融合在一起,这意味着您可以单独使用 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使用了一些简短的逻辑词条的名称,以便于人们学习和使用。
标准交换机
假设创建一个新的虚拟LAN(VLAN)。而在我们的VMware集群中共有32台ESX主机,而且是可以支持分布式资源调度(DRS)和高可用(HA)的VMware集群,那么您需要跨所有的32台ESX主机上创建新的VLAN,同时创建指定的端口组VLAN20。 当然,如果您使用了VMware vSphere4和新的vNetwork Distributed Switches,给分布式交换机增加端口组仅仅是一项琐碎的小工作,只需要稍等一会,它就会自动为每台ESX主机添加。但是,即使您使用的是vSphere 4,也可能无法实现自动的过程,因为分布式交换机只有在最昂贵的vSphere版本中才会激活,即Enterprise Plus版本。 如果没有Enterprise Plus版本,您被迫需要使用标准的交换机技术。那么请遵循以下的步骤,在VMware Infrastructure Client或vSphere Client中操作:
1. 选择ESX主机;
2. 选择Configuration页;
3. 在Hardware Pane中选中Network选项;
4. 选择Standard vSwitch的参数;
5. 通过运行向导来增加端口组(在这些步骤之外,该向导还有额外的三步操作);
6. 花费整个早上的时间用于不断地重复步骤1-5在其余的31台ESX主机上。
当然,执行一个重复的工作进程是非常枯燥的事情,而且还带有极大的风险可能会发生人为错误。当人们不断地去重复某项工作时,出错误的概率会极大地上升。
PwoerCLI如何拯救这个过程? VMware在客户体验上很糟糕的一点就是总让管理员不断地面临这种状况。但是这并不是完全无能为力——通过使用一组PowerCLI代码,管理员可以在几分钟的时间内完成这个工作。 该过程的第一步就是学习如何在已存在的vSwitch中,为某台ESX主机添加一个端口组。接下来,就是把这个过程重复到集群中的每台ESX主机上,通过使用PowerCLI中的一个非常方便的“for-each”命令就可以把该配置改变应用到所有的ESX主机。为了达到这个目的,通过使用Get-VitualSwitch cmdlet命令来选择希望调整的目标vSwitch,然后配合使用New-VirtualPortGroup命令来创建端口组。
接下来要做的就是确保这个过程已经在指定集群的每台ESX主机上都正确运行。为了满足安全性和可靠性的需求,您需要采用必要的过滤机制来保证其它的无关ESX主机不会执行该命令。该过滤机制主要用于通知到PowerCLI,只对数据中心里指定的VMware HA/DRS集群中的主机做操作。这五行命令如下:
{
}
注: xxxxxx为你的域名