| 为了有效地管理虚拟化平台,你需要强有力的脚本工具。这能允许几种级别的配置,并且缩短配置时间。微软hypervisor的脚本选项包括能在Hyper-V脚本环境里使用VBScript和增强型PowerShell。在本文中,TechTarget中国特约虚拟化专家Rick Vanover将介绍Hyper-V脚本是如何工作的,并举出几个例子。 Hyper-V的脚本环境通常叫做Windows Management Instrumentation(WMI),我们将注重虚拟化命名空间。使用WMI界面,管理员拥有使用Hyper-V完成大量任务的脚本。使用PowerShell Management Library让管理更加轻松。 确定使用何种脚本取决于需要什么及可用什么。我会关注不能由System Center Virtual Machine Manager(SCVMM)集中管理的Hyper-V服务器,因为微软为SCVMM实施提供了额外的脚本选项。检查TechNet页查看SCVMM脚本概况。 微软更擅长书写脚本 Virtual PC Guy的网络日志。Ben Armstrong的Microsoft Developer Network (MSDN)博客有来自所有微软虚拟化系统的简单脚本资源。 Taylor Brown的博客。这是另一个强有力的资源。Brown包括了几个使用案例,包括关于SCVMM的一个案例。 微软虚拟化团队博客地址。这个博客包括所有与Hyper-V相关的东西,也有其他虚拟化资源。 PowerGUI.org的Hyper-V PowerPack。这相当于VMware的VI Toolkit,来自PowerGUI的功能是必须要有的,确保查看TechTarget上Eric Seibert写的关于这个工具包的技巧。 获取虚拟机信息的案例 既然我们对脚本选项作了一个概述,现在我们来看看实例。在Hyper-V里使用的PowerShell脚本,几乎每个资源都以查询脚本开始,尤其是包括决定性操作的脚本。这只是与Hyper-V的虚拟化命名空间交互影响的一个单行方式,并获取虚拟机信息就像它存在于命名空间。许多脚本想要查询这个获取当前的状态,如OperationalStatus的值,这表明了虚拟机的运行状态。下面这个简单的命令能从名为“TESTVM1”的虚拟机获取信息: Get-WmiObject -Namespace root\virtualization -Query "Select * From Msvm_ComputerSystem Where ElementName='TESTVM1'" 如果你想在自己的环境中运行虚拟机,那它的名字是唯一需要更改的地方。当在PowerShell里执行时,显示结果见下图1: 点击放大 注意,虚拟机的OperationalStatus值显示为“2”,意味着它在运行。 使用VBScript脚本停止或启动虚拟机 开启和停止虚拟机这样的基本任务是学习脚本的好的开始。不同于PowerShell,Hyper-V机器能通过VBScript交互,并且能完全访问WMI虚拟化命名空间。下面的脚本执行的是启动使用由VBScript关闭的虚拟机: Option Explicit Dim CallWMI Dim InventoryVMs Dim YourVM YourVM = "TESTVM1" Set CallWMI = GetObject("winmgmts:\\.\root\virtualization") Set InventoryVMs = CallWMI.ExecQuery("SELECT * FROM Msvm_ComputerSystem WHERE ElementName='" & YourVM & "'") InventoryVMs.ItemIndex(0).RequestStateChange(2) 如PowerShell,脚本里唯一需要更改的地方是“YourVM”的在线值,VBScript。保存这个文本为本地文件系统上的.VBS文件,允许其在本地执行。 现在我们在远程Hyper-V服务器上执行关闭命令。先前的例子是为了在拥有Hyper-V和特定虚拟机的服务器上本地运行脚本。有多台Hyper-V服务器并且不执行SCVMM对环境有利。这个脚本将在Server55上远程关闭(强制关闭)TESTVM1虚拟机。 Option Explicit Dim CallWMI Dim InventoryVMs Dim YourVM YourVM = "TESTVM1" Set CallWMI = GetObject("winmgmts:\\SERVER55\root\virtualization") Set InventoryVMs = CallWMI.ExecQuery("SELECT * FROM Msvm_ComputerSystem WHERE ElementName='" & YourVM & "'") InventoryVMs.ItemIndex(0).RequestStateChange(3) 注意,第六行输入了Server55的名字,这是宿主TESTVM1的Hyper-V服务器。它能从系统远程运行,注意WMI命名空间,如另一台Windows Server 2008服务器。强制关闭如上面例子中最后一行的代号3发送。其他流行的虚拟机代号包括以下这些: Reboot (10):这个代号在虚拟机上执行硬启动。 测试Hyper-V脚本(责任编辑:生如夏花) |

