我有两个脚本来为一组服务器创建和删除快照。当我删除快照时,它一次做一个,但当我创建快照时,它试图一次做所有这些,这往往会使主机过载。有人知道我错过了一个选项,让它一次创建一个快照吗?
下面是我用来创建快照的代码
get-vm -location “Test-Env” | New-Snapshot -Memory -Quiesce -Name Snap1
下面是我用来删除快照的方法
get-vm -location “Test-Env” | Get-Snapshot -Name Snap1 | Remove-Snapshot
问题是你使用的位置是一个集合(可能是资源池),所以它试图一次完成它们。
New-Snapshot命令应该运行每个快照并等待每个虚拟机引用它。使用RunAsync命令停止等待,默认为关闭。
https://www.vmware.com/support/developer/PowerCLI/PowerCLI41U1/html/New-Snapshot.html所以你不需要睡觉
$VMS = get-vm -location “Test-Env”
foreach ($VM in $VMS)
{
$Snapshot = $VM | New-Snapshot -Memory -Quiesce -Name Snap1
}
您可以简单地使用Start-Sleep
cmdlet来等待,或者使用do/while循环,直到您检查快照的完成,使用如下内容:
$VMS = get-vm -location “Test-Env”
foreach ($VM in $VMS)
{
$Snapshot = $VM | New-Snapshot -Memory -Quiesce -Name Snap1
do {
sleep 1
}
until (Get-Snapshot $Snapshot)
}