对于虚拟机、宿主机和任务进程而言,微软Hyper-V管理控制台和SCVMM(System Center Virtual Machine Manager)都是很不错的管理工具。但是和大多数的图形界面接口(GUI)工具一样,都无法避免在客户定制化和管理权限上受到限制。但是PowerShell的使用可以很好的弥补Hyper-V在管理方面的缺陷。 SCVMM和Hyper-V PowerShell cmdlets帮助虚拟机环境的管理员开启了新的管理模式。
在本文中,TechTarget中国的特约专家Rob McShinsky讲述一些PowerShell cmdlets和命令。即使您没有购买SCVMM,……
我们一直都在努力坚持原创.......请不要一声不吭,就悄悄拿走。
我原创,你原创,我们的内容世界才会更加精彩!
【所有原创内容版权均属TechTarget,欢迎大家转发分享。但未经授权,严禁任何媒体(平面媒体、网络媒体、自媒体等)以及微信公众号复制、转载、摘编或以其他方式进行使用。】
微信公众号
TechTarget
官方微博
TechTarget中国
对于虚拟机、宿主机和任务进程而言,微软Hyper-V管理控制台和SCVMM(System Center Virtual Machine Manager)都是很不错的管理工具。但是和大多数的图形界面接口(GUI)工具一样,都无法避免在客户定制化和管理权限上受到限制。但是PowerShell的使用可以很好的弥补Hyper-V在管理方面的缺陷。
SCVMM和Hyper-V PowerShell cmdlets帮助虚拟机环境的管理员开启了新的管理模式。在本文中,TechTarget中国的特约专家Rob McShinsky讲述一些PowerShell cmdlets和命令。即使您没有购买SCVMM,依然可以使用PowerShell来完成大多数的任务,包括:获得基本的系统信息、创建新的虚拟机和完成在线迁移过程等。首先,下载并安装Hyper-V PowerShell模块。(或许某些时候您还需要更改PowerShell的执行模式,以保证该模块可以正确运行。在Windows Server 2008中它可以正常工作,但是在Windows 7中,您可能需要对执行模式做更改以减轻其受到的限制。这并不是最佳的办法,但是请注意有些时候我们必须减轻执行模式的限制。 )
在完成了Hyper-V PowerShell模块的安装后,接下来就可以尝试一些基本的功能。在你对这些PowerShell cmdlets和命令足够熟悉之后,还可以组合一些命令编写成更加复杂和实用的脚本。但是这个过程并不像“Hello World”那么简单,在我们学习跑步之前先来学习走路。
Get-VM。这个cmdlets对于很多脚本程序而言,都是最基本的常用命令之一,而且从字面上也很容易理解。Get-VM检索虚拟机相关的信息,然后快速呈现出某台特定主机上的虚拟机状态。我经常这样使用该命令:
Get-VM --Server
图1
请注意,您必须通过-Server辅助命令来锁定某一台特殊的服务器操作,这点在使用Hyper-V管理控制台时也是一样的。
New-VM, Set-VMMemory, Set-VMCPUCount, Add-NewVirtualHardDisk.这一组Hyper-V PowerShell cmdlets用于创建新虚拟机。虽然在Hyper-V Manager GUI中通过配置向导来完成更加简单一些,但是在需要同时创建多个虚拟机的时候,命令行的方式会更加好用。
图2
通过这些命令做简单调整,还可以增加或修改多台虚拟机。
New-VM -Server Host1 -Name RobTest2,RobTest3,RobTest4 -Path d:
Set-VMMemory -Server Host1 -VM RobTest2,RobTest3,RobTest4 1024
Set-VMCPUCount -Server Host1 -VM RobTest2,RobTest3,RobTest4 4
Add-NewVMHardDisk -Server Host1 -VM RobTest2,RobTest3,RobTest4 -Size 24GB
现在您可以看到,在同时创建多个虚拟机时这样可以节省时间。
Start-VM, Stop-VM, Save-VM, Shutdown-VM.用于完成虚拟机状态调整的命令也非常的好用。有一些操作无法通过GUI来实现的,我经常使用这些命令来关闭虚拟机或是保存虚拟机状态以用于故障诊断。和同时创建和调整多个虚拟机的命令相似,通过这些命令可以同时改变多台虚拟机的运行状态。
Start-VM -Server Host1 -VM RobTest2,RobTest3,RobTest4
Stop-VM -Server Host1 -VM RobTest2,RobTest3,RobTest4
Save-VM -Server Host1 -VM RobTest2,RobTest3,RobTest4
Shutdown-VM -Server Host1 -VM RobTest2,RobTest3,RobTest4
注: 如果要使用Shutdown-VM命令,需要安装Hyper-V集成组件。
Move-VM.PowerShell还可以用于帮助完成Hyper-V集群的某些工作。我曾经在Failover Cluster Administrator无法正确工作的情况下,使用如下的命令迁移虚拟机以用于故障的诊断。当然,使用cluster.exe命令也可以在节点间迁移虚拟机,但是我更喜欢使用PowerShell命令。
Move-VM -Server Host1 -VM RobTest2 -Destination Host2 --force
当然,多台虚拟机的迁移也是可以实现的,但是需要连续地操作。
Move-VM -Server Host1 -VM RobTest2,RobTest3,RobTest4 -Destination Host2 --force
或者借助通配符,您也可以把Host1上的所有以RobTest开头的虚拟机迁移到Host2上。
Move-VM -Server Host1 -VM RobTest% -Destination Host2 --force
(注:为了避免出现提示信息:“WARNING: Cluster commands not loaded. Import-Module FailoverClusters and tr y again”,运行“Run, Import-Module FailoverCluster”命令完成Failover Cluster模块的装载,并启用PowerShell的集群属性。)
在您对这些PowerShell cmdlets和命令逐渐熟悉以后,可以尝试浏览一下PowerShell Management Library for Hyper-V 手册。虽然手册的内容本身让人昏昏欲睡,但是我们可以一边阅读一边实践一些新的Hyper-V PowerShell命令,之后您可能会发现它提供了一种通用的语法模式。那么,您就可以编写脚本来借助PowerShell完成一些更加复杂的辅助性管理工作,相信您会慢慢发现这样做要比完全使用Hyper-V向导来完成虚拟机管理任务快地多。
相关推荐
-
回顾年度9大虚拟化技术
虚拟化管理员从未放弃追寻更好虚拟化技术,以使他们的工作更快、更易于管理以及更好地优化。 我们看到,虚拟化工具在 […]
-
从Azure VM到Hyper-V:想想这些技巧
多年来,IT行业已经推动IT人员把工作负载转到云中。虽然在公有云中有一些好处,但有些工作负载更适合运行云本地数据中心中。
-
功能多样的Get-VM PowerShell cmdlet,你知道多少?
Hyper-V管理员能够使用Get-VM PowerShell cmdlet查看并调整一系列虚拟机配置信息。微软花费大量精力对PowerShell进行优化,以提升其对本地或者远程服务器的管理功能。
-
支持Linux虚拟机:新版Hyper-V来帮忙
大家都知道,Linux虚拟机无法利用Hyper-V针对Windows虚拟机提供的众多特性。幸运的是,情况已经发生变化,Hyper-V现在能够为Linux提供更多的支持。