Powershell powercli将新快照限制为一次创建一个

Powershell powercli将新快照限制为一次创建一个,powershell,vmware,powercli,Powershell,Vmware,Powercli,我有两个脚本来为一组服务器创建和删除快照。当我删除快照时,它会一次删除一个,但当我创建快照时,它会尝试一次删除所有快照,这会使主机过载。有人知道我缺少一个选项,让它一次创建一个快照吗 下面是我用来创建快照的内容 get-vm -location “Test-Env” | New-Snapshot -Memory -Quiesce -Name Snap1 get-vm -location “Test-Env” | Get-Snapshot -Name Snap1 | Remove-Snapsho

我有两个脚本来为一组服务器创建和删除快照。当我删除快照时,它会一次删除一个,但当我创建快照时,它会尝试一次删除所有快照,这会使主机过载。有人知道我缺少一个选项,让它一次创建一个快照吗

下面是我用来创建快照的内容

get-vm -location “Test-Env” | New-Snapshot -Memory -Quiesce -Name Snap1
get-vm -location “Test-Env” | Get-Snapshot -Name Snap1 | Remove-Snapshot
下面是我用来删除快照的内容

get-vm -location “Test-Env” | New-Snapshot -Memory -Quiesce -Name Snap1
get-vm -location “Test-Env” | Get-Snapshot -Name Snap1 | Remove-Snapshot

您只需使用
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)
    } 

问题是您使用的位置是一个集合(可能是资源池),所以它试图一次完成所有任务

新的Snapshot命令应该运行每一个命令,并等待您在每个VM上引用它。使用RunAsync命令停止它等待每一个,默认设置为关闭

所以你不需要睡觉

$VMS = get-vm -location “Test-Env”

foreach ($VM in $VMS)
{
    $Snapshot = $VM | New-Snapshot -Memory -Quiesce -Name Snap1
}