Ant*_*ito 12 powershell hyper-v
我有两台带有 Server 2016 Datacenter 的主机
在每台主机上,我有 2 个当前使用共享存储的虚拟机开发
我可以做所有集群的事情,即实时迁移、移动存储、
我一直在谷歌上寻找能够同时保存集群中所有虚拟机的脚本。
如果我运行这个:
$clusterNodes = Get-ClusterNode;
$Name = ForEach($item in $clusterNodes){Get-VM -ComputerName $item.Name; }
{save-VM -ComputerName $item.Name; }
Run Code Online (Sandbox Code Playgroud)
它将保存虚拟机,但是它会为每个主机提示我两次输入虚拟机的名称。
我的总体目标是能够从一台 PC 重新配置集群中的所有 VM,而且 vm 经常移动,因此它们并不总是在同一台主机上。
例子:
保存所有虚拟机
关闭 os 共享存储:
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
Run Code Online (Sandbox Code Playgroud)
启动虚拟机
如果我单独登录每个主机,该命令将运行良好,但是在我的生产中,我有 7 个主机,大约有 100 个虚拟机。
如果您想从 PowerShell 寻址整个集群,最好的解决方案可能是 System Center Virtual Machine Manager 中的 PowerShell 模块。它就是为此而建造的。
您使用的 PowerShell 模块用于单主机脚本。它仍然可以工作。您可以重构上面的代码。举个例子:
$clusterNodeNames = (Get-ClusterNode -Cluster ClusterName).Name
$AllVMsInCluster = Get-VM -ComputerName $clusterNodeNames
$AllVMsInCluster | Save-VM -Confirm:$false
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
89 次 |
最近记录: |