使用Hyper-V PowerShell和ForEach循环轻松管理虚拟机

日期: 2015-12-20 作者:Nirmal Sharma翻译:张冀川 来源:TechTarget中国 英文

Hyper-V PowerShell cmdlets能够节省执行任务的时间——尤其是重复性任务。PowerShell cmdlets避免了使用Hyper-V Manager图形用户接口进行日常维护任务。尽管可以使用很多Hyper-V PowerShell cmdlets,但并非所有的cmdlets都可以用于日常管理任务。下面了解一些最常用的PowerShell cmdlets,以及增加ForEach 循环为何能够帮您节省时间。

完成副本虚拟机故障切换 Complete-VMFailover cmdlet被用作Hyper-V 复制进程的一部分,允许你完成副本虚拟机的故障切换、删除副本服务器上的所……

我们一直都在努力坚持原创.......请不要一声不吭,就悄悄拿走。

我原创,你原创,我们的内容世界才会更加精彩!

【所有原创内容版权均属TechTarget,欢迎大家转发分享。但未经授权,严禁任何媒体(平面媒体、网络媒体、自媒体等)以及微信公众号复制、转载、摘编或以其他方式进行使用。】

微信公众号

TechTarget微信公众号二维码

TechTarget

官方微博

TechTarget中国官方微博二维码

TechTarget中国

电子邮件地址不会被公开。 必填项已用*标注

敬请读者发表评论,本站保留删除与本文无关和不雅评论的权力。

Hyper-V PowerShell cmdlets能够节省执行任务的时间——尤其是重复性任务。PowerShell cmdlets避免了使用Hyper-V Manager图形用户接口进行日常维护任务。尽管可以使用很多Hyper-V PowerShell cmdlets,但并非所有的cmdlets都可以用于日常管理任务。下面了解一些最常用的PowerShell cmdlets,以及增加ForEach 循环为何能够帮您节省时间。

完成副本虚拟机故障切换

Complete-VMFailover cmdlet被用作Hyper-V 复制进程的一部分,允许你完成副本虚拟机的故障切换、删除副本服务器上的所有恢复点。你可以指定单个虚拟机的名字或者使用一个星号发起针对服务器上所有副本虚拟机的“完整故障切换”流程。例如,可以使用如下命令发起本地副本服务器上单个虚拟机完整的故障切换流程:

Complete-VMFailover –VMName ReplicaVM.

如果需要完成远程副本服务器的故障切换,可以在–ComputerName参数中指定副本服务器名:

Complete-VMFailover –VMName ReplicaVM –ComputerName ReplicaServer1.

如果你想针对多台副本虚拟机发起完整的故障切换,可以指定多个虚拟机名,并用逗号分隔:

Complete-VMFailover –VMName ReplicaVM1, ReplicaVM2, ReplicaVM3 –ComputerName ReplicaServer1.

暂停并停止虚拟机复制: Hyper-V PowerShell 提供Suspend-VMReplication以及Stop-VMReplication cmdlets 暂停或停止正在进行的虚拟机复制。此外, 如果你想对主、副站点之间与网络相关的问题进行故障诊断,Suspend-VMReplication cmdlet 能派上用场。例如,Suspend-VMReplication *命令暂停本地Hyper-V主机上所有虚拟机的复制操作。

你还可以利用Hyper-V 管理器通过单击右键在每台虚拟机执行同样的任务,然后在虚拟机的快捷菜单中选择“暂停复制”。 Suspend-VMReplication以及Stop-VMReplication cmdlets接受多个虚拟机名字以及多个Hyper-V 主机名,示例如下:

Suspend-VMReplication –VMName ReplicaVM1, ReplicaVM2, ReplicaVM3 –ComputerName ReplicaServer1.

授权并撤销虚拟机连接访问:在Hyper-V 2012 R2主机中,你可以使用Grant-VMConnectAccess以及Revoke-VMConnectAccess cmdlets授权或撤销用户访问特定的虚拟机。例如,如果你想允许用户User1连接到ExchangeVM,可以使用如下命令:

Grant-VMConnectAccess –VMName ExchangeVM –Username TechTarget.comUser1.

如果你想撤销用户访问ExchangeVM,可以使用如下命令:

Revoke-VMConnectAccess –VMName ExchangeVM –Username TechTarget.comUser1.

在cmdlets中增加ForEach循环

大多数Hyper-V PowerShell cmdlets支持 ComputerName参数,允许你执行位于远程Hyper-V主机上的命令,而且VMName参数允许你将操作扩展到多台虚拟机。尽管你可以指定多台虚拟机以及多个Hyper-V主机名,但不能使用单个命令指定将一台虚拟机迁移到特定主机,而将另一个虚拟机迁移到不同的主机。

尽管PowerShell cmdlets可以用于很多管理任务,但针对很多复杂或重复性任务,你可能需要引入ForEach循环。ForEach循环允许你多次执行PowerShell命令,但是针对不同的虚拟机以及Hyper-V主机。例如,如果你想指定哪些虚拟机应该切换到指定的主机,那么可以创建包括虚拟机以及Hyper-V主机名的一个.CSV文件。然后可以使用ForEach循环命令引用该列表并处理命令,示例如下:

$VMFile = Import-CSV MyVMs.CSV

ForEach ($Items in $VMFile)

{

Complete-VMFailover -VMName $VM.VMName –ComputerName $VM.Hyper-VServer                                                                                       }

创建一个包含虚拟机以及Hyper-V主机名的.CSV文件

这个过程也可以与其他命令一起使用。例如,如果你想允许多个用户访问ExchangeVM,可以使用包含用户名以及ForEach循环的.TXT文件,命令如下:

$AllUsers = Get-Content Users.TXT

ForEach ($ThisUser in $AllUsers)

{

Grant-VMConnectAccess -VMName ExchangeVM –UserName $ThisUser

}

Hyper-V PowerShell cmdlets帮助你提高生产率并实现重复性任务的自动化,但单独使用Hyper-V PowerShell cmdlets并不能解决所有问题。在某些情况下,针对特定的虚拟机以及Hyper-V主机,你可能需要使用ForEach循环帮助你更好地执行cmdlets。

作者

Nirmal Sharma
Nirmal Sharma

TechTarget投稿作者

翻译

张冀川
张冀川

TechTarget中国特约专家,任职于某国企信息中心,负责数据中心硬件基础设施及信息系统运维管理工作,对虚拟化及云计算技术有浓厚兴趣,并在工作中积极应用

相关推荐