在Windows Server 2012中,微软帮助你借助PowerShell命令行完善管理Hyper-V虚拟化基础设施和虚拟机(VM)。事实上,Windows Server 2012包含了几十个专门用于服务器虚拟化的Windows PowerShell v3命令。单个PowerShell cmdlet虽然不会让每个数据中心受益,但其他的cmdlet提供了重要的管理功能。
PowerShell v3语法虽然看上去有点复杂,但是很值得学习,尤其是当你需要管理大规模数量的虚拟机的时候。
这里列出了每个管理员都需要知道的五个重要的PowerShell v3命令。
Get-VM cmdlet
Get-VM几乎是使用最频繁的与服务器虚拟化相关的PowerShell v3命令。当不予任何交换机共同工作时,Get-VM cmdlet返回一个包含主机服务器上所有当前VM的列表。如图所示,列表还包含了VM的状态、CPU和内存使用、正常运行时间和状态等信息。使用该命令,你还可以检索某个特定的VM通过一系列的命令行交换器之后的颗粒信息。
Invoke-Command cmdlet进行批量操作
Invoke-Command cmdlet执行批量的PowerShell操作。管理大规模数量的VM变得更加简单,因为你可以在多个Hyper-V主机上运行该cmdlet。仅包括-ComputerName开关,目标服务器名称之间用逗号分隔,在远程服务器上运行的命令以大括号结束。
假设你要检索标记为Lab1和Lab2的服务器上运行的所有VM的名称和状态,可以使用下面的PowerShell v3命令:
Invoke-Command –ComputerName Lab1, Lab2 {Get-VM | FT VMName, State, PrimaryStatusDescription}
图片内容是该命令的一个示例。如图所示,Invoke-Command指出了多个Hyper-V主机上的Get-VM命令。该图还列出出了每个VM指定显示的属性。
Get-ClusterGroup cmdlet监控群集资源
Get-ClusterGroup cmdlet是Windows Server 2012故障转移群集功能的一部分,在虚拟服务器环境中尤其有用。大多数生产虚拟服务器形成集群来提高VM的可靠性。Get-ClusterGroup cmdlet生成群集VM的健康报告。
Get-ClusterGroup cmdlet自动运行,检索所有的群集资源信息,包括VM等。为了限制VM列表,你必须加上Where GroupType –EQ 'VirtualMachine' 。整个的PowerShell v3命令如下:
Get-ClusterGroup | Where GroupType –EQ 'VirtualMachine' | Get-VM
上图显示了运行中的命令。图表中,我将输出重定向到Get-VMcmdlet检索集群VM;但是,你可以很容易地在你的集群VM中应用该技术来执行任何批量操作。
Stop-VM cmdlet和Start-VM cmdlet更改状态
你可以使用 Start-VM cmdlet启动任何虚拟机。除了VM名称,这个简单的cmdlet不需要任何命令行开关项。简单地说,如果你想停止一台VM,使用如图所示的Stop-VM cmdlet。这些PowerShell v3 cmdlet在执行脚本操作中简单易用,注意需要重启VM。
New-VM cmdlet能够在 PowerShell v3命令行中创建一个全新的虚拟机。如果你使用该cmdlet创建新VM时,只指明了新VM的名称,它会创建一个具有以下资源的VM:
- 512 MB内存
- DVD驱动器
- 1个虚拟处理器
当然,你可以在VM创建过程中分配更多的资源,比如虚拟网络适配器和虚拟硬盘。但这要求额外的命令和命令行开关项。上图显示了该工具如何从命令行创建VM。