之前,我们看过PowerCLI——它是什么,如何安装,以及如何集成到Windows Powershell ISE中。现在,让我们来看一下基本脚本,包括连接、PowerCLI命令以及循环。
基本PowerCLI脚本
让我们看看一些基本的PowerCLI命令,看看如何轻松地开始使用PowerCLI从我们的vSphere环境中获取信息。请记住,以下内容绝不意味着是一篇全面的教程,而是PowerCLI的介绍以及如何开始运行命令并学习自动化您的环境。
我们需要运行的第一个命令是实际连接到我们的vSphere环境的命令。您可以直接连接到ESXi主机或vCenter服务器。
要连接,请在启用PowerCLI的PowerShell会话中运行以下命令:
connect-viserver –server 〈yourserver〉
当您运行该命令时,将提示您输入登录凭据。输入您的用户名和密码,以连接到您的ESXi服务器或vCenter服务器。
当我们连接到ESXi或vCenter时,我们可以运行的最基本的命令之一是查看环境中的所有虚拟机。我们使用get-vm命令来显示有关虚拟机客户机的信息。
Get-VM - get-vm命令列出连接主机上运行的VM
要从get-vm
命令中获取更详细的信息,我们可以使用以下命令显示完整信息:
Get-VM | fl
– 显示更详细的信息,如客户操作系统、资源池、虚拟机硬件版本级别、所在文件夹等其他细节。
现在,让我们从Get-VM命令获取特定有用的信息。让我们查找处于已关闭状态的VM。我们可以从Get-VM
命令获取信息,然后将其管道传递到where-object
以选择我们想要查询的特定信息 – 在本例中是PowerState
。如您所见,通过获取各种VM信息并将此信息传递到另一个PowerShell命令中,可以有无数种可能性。
Get-VM | where-object {$_.PowerState -eq "PoweredOff"}
如您所见,这仅显示处于“PoweredOff” PowerState的VM。这可能非常有用。我们甚至可以将上述命令的结果传递到Start-VM命令。因此,我们基本上可以获取所有已关闭的VM,然后启动这些VM。
Get-VM | where-object {$_.PowerState -eq "PoweredOff"} | Start-VM
那么如何关闭特定的VM呢?我们也可以做到。我们可以按名称调用VM,然后使用Stop-VMGuest命令,该命令启动客户操作系统关闭。
Get-VM 〈yourvm〉 | Stop-VMguest
如果您不想收到动作的确认,我们可以添加 -confirm:false参数:
我们想要查看有多少个正在运行的虚拟机分配了超过 1个CPU。同样,我们可以使用 where-object 命令来选择出 NumCpu 对象。
Get-VM | where-object {$_.NumCpu –gt 1 }
PowerCLI 循环
循环允许您针对所选对象或循环多次执行相同的操作。例如,使用 foreach 循环,我们可以多次循环执行某个动作。其设置如下伪代码:
foreach ($var in $vars){
Do something…
}
如果我们想要具体指定要对哪些对象执行操作,我们可以,例如,遍历来自文本文件的特定 VM 列表。要填充文本文件,我们可以运行我们的 Get-VM 命令选择我们想要的属性,然后将其传递到文本文件。然后,我们可以使用 PowerShell 读取文本文件,并将 VM 放入数组中,以便我们可以对其进行循环并执行操作。以下是将新网络适配器添加到列表中的 VM 的示例。
Get-vm | where-object {$_.MemoryGB –eq 4 } | select -ExpandProperty Name | out-file c:\VMs.txt
$vms = get-content c:\VMs.txt
Foreach-object ($vm in $vms) {
new-networkadapter -vm $vms -NetworkName "〈Port group name〉" -Type "VMXNET3" –startconnected
}
资源
在网络上有很多优秀的资源,包括个人博客网站、官方文档、代码示例等等。我发现,如果你能想到想做的事情,很可能已经有人写了一行 PowerCLI 代码来实现你想要的。另一个好处是,通常你可以找到非常接近你想做的事情的内容,学习基础知识后,你可以进行很少的修改来满足你的需求。通过这样做,你也在学习 PowerCLI 及其工作原理,以及如何修改代码来执行你需要完成的任务。
A great place to start with documentation and other resources is the official VMware PowerCLI release and documentation site. Here, you can download the binaries as well as the official User’s Guide.
还有很多书籍,其中包含可供剖析和修改的脚本和脚本示例。记住那些 VMware 管理员社区,他们大多数情况下乐于分享他们从其他人那里学到的知识,以便熟练掌握 PowerCLI。向你社区中的这些人寻求具体帮助或一般原则。
想法
可以说,PowerCLI 非常强大。在上面展示的示例中,我们只是刚刚触及到了表面。任何你重复执行的任务,或者在网络客户端中执行起来很繁琐的任务,都是使用 PowerCLI 编写脚本的绝佳候选。事实上,这通常是大多数人开始接触 PowerCLI 的方式——他们有一个需要自动执行的任务,或者是一个基于 vSphere 中其他操作的操作,或者是重复执行的操作非常适合进行脚本编写。
最好学习PowerCLI的方法是下载它,安装它,并开始在实验环境中使用它,比如家庭实验室。只有当您看到利用自动化来控制vSphere的潜力时,VMware vSphere环境的真正力量才会被释放。所以,开始使用PowerCLI进行脚本编写,您将永远不会后悔!
Source:
https://www.nakivo.com/blog/basic-powercli-scripting-vmware-vsphere/