我有几个脚本可以为一组服务器创建和删除快照。当我删除快照时,它一次只执行一次,但是当我创建快照时,它会尝试一次性完成这些快照,这会使主机过载。有没有人知道我错过了一个选项,让它一次创建一个快照?
以下是我用来创建快照的内容
get-vm -location “Test-Env” | New-Snapshot -Memory -Quiesce -Name Snap1
以下是我用来删除快照的内容
get-vm -location “Test-Env” | Get-Snapshot -Name Snap1 | Remove-Snapshot
答案 0 :(得分:0)
您只需使用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)
}
答案 1 :(得分:0)
问题是你使用的是一个集合(可能是资源池)的位置,所以它试图一次性完成它们。
New-Snapshot命令应该运行每个命令并等待每个VM引用它。使用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
}