【问题标题】:Reverting to VM snapshot for multiple VMs恢复为多个 VM 的 VM 快照
【发布时间】:2017-08-27 16:13:19
【问题描述】:
#Connect-VIServer 10.222.111.21 –User root –Password Welcome2world

$VMs = Get-Content 'C:\vmscripts\vmlist.txt'

$snapname = 'BaseOS'

Get-Snapshot -VM $VMs -Name $snapname | Foreach-Object {  Set-VM -VM $_.VM -Confirm:$false }

上面的脚本可以正常工作,因为存在 VM 快照。但是,如果任何一个 VM 没有快照“BaseOs”,它就会失败。

有人可以帮忙吗!平台是 VMWARE。

【问题讨论】:

  • 请编辑问题。它缺少重要的细节,例如使用的虚拟化平台(它看起来像 VMWare,但为什么要猜测?)和确切的错误消息。
  • 抱歉遗漏了细节……是的,它的 VMWARE。我猜 TRY 和 CATCH 应该可以解决这个问题。但不确定在哪里添加 TRY/CATCH 语句
  • 这里的失败是什么意思?你有错误吗?这应该包括在内。

标签: powershell vmware snapshot revert vsphere


【解决方案1】:

这就是 vMware Get-Snapshot cmd-let 的工作原理。如果您将快照的-Name 参数和-VM 指定为多个主机,如果其中一些主机没有-Name 参数中指定的快照,它将失败。这将起作用: 为您的命令添加一些逻辑以遍历每个 $VM,如果快照名称等于 $snapname,则恢复。这将起作用:

$VMs = Get-Content 'C:\vmscripts\vmlist.txt'
$snapname = 'BaseOS';
foreach($VM in $VMs) { Get-Snapshot -VM $VM | Foreach-Object { if($_.Name -eq $snapname) { Set-VM -VM $VM -SnapShot $snapname -Confirm:$false } } }

【讨论】:

  • 感谢您的澄清
猜你喜欢
  • 2023-03-24
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-08-18
  • 1970-01-01
相关资源
最近更新 更多