我有 2 台主机,都带有 Server 2016 Datacenter
在每台主机上,我有 2 个 VM 的当前 Dev 使用共享存储
我可以做所有集群的事情,即实时迁移、移动存储、
我一直在谷歌上寻找能够同时保存集群中所有虚拟机的脚本。
如果我运行这个:
$clusterNodes = Get-ClusterNode;
$Name = ForEach($item in $clusterNodes){Get-VM -ComputerName $item.Name; }
{save-VM -ComputerName $item.Name; }
它将保存虚拟机,但是它会提示我两次输入每个主机的虚拟机名称。
我的总体目标是能够从一台 PC 重新配置集群中的所有虚拟机,虚拟机也经常移动,因此它们并不总是在同一台主机上。
例子:
保存所有虚拟机
将共享存储移出操作系统:
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 个虚拟机。
如果您想通过 PowerShell 处理整个集群,最好的解决方案可能是 System Center Virtual Machine Manager 中的 PowerShell 模块。它就是为此而建的。
您使用的 PowerShell 模块用于单主机脚本。它仍然可以工作。您可以在上面重构您的代码。举个例子: