如何使用 powershell 管理 Hyper-v Cluser

如何使用 powershell 管理 Hyper-v Cluser

我有 2 个主机,都装有 Server 2016 Datacenter

在每个主机上,我有 2 个虚拟机,目前正在使用共享存储进行开发

我可以做所有集群的事情,例如实时迁移、移动存储,

我一直在谷歌上寻找一个能够同时保存集群中所有虚拟机的脚本。

如果我运行这个:

$clusterNodes = Get-ClusterNode;
$Name = ForEach($item in $clusterNodes){Get-VM -ComputerName $item.Name; }
{save-VM -ComputerName $item.Name; }

它将保存虚拟机,但是它会针对每个主机提示我两次输入虚拟机的名称。

我的总体目标是能够从一台 PC 重新配置集群中的所有 VM,而且 VM 会经常移动,因此它们并不总是在同一台主机上。

例子:

保存所有虚拟机

移出共享存储:

Set-VM pv02 -SnapshotFileLocation C:\ClusterStorage\Volume1\pv02
Set-VM pv02 -SmartPagingFilePath C:\ClusterStorage\Volume1\pv02
Set-VMHardDiskDrive -VMName  pv02 -ControllerType SCSI -Path C:\ClusterStorage\Volume1\pv02\pv02.vhdx

启动虚拟机

如果我单独登录到每个主机,命令将运行正常,但是在我的生产中我有 7 个主机和大约 100 个虚拟机。

答案1

如果您想通过 PowerShell 解决整个集群问题,最好的解决方案可能是 System Center Virtual Machine Manager 中的 PowerShell 模块。它就是为此而构建的。

您使用的 PowerShell 模块旨在用于单主机脚本。它仍然可以工作。您可以重新构建上面的代码。例如:

$clusterNodeNames = (Get-ClusterNode -Cluster ClusterName).Name
$AllVMsInCluster = Get-VM -ComputerName $clusterNodeNames
$AllVMsInCluster | Save-VM -Confirm:$false

相关内容