当前位置:网站首页 > 更多 > 玩电脑 > 正文

[玩转系统] Hyper-V 等待合并

作者:精品下载站 日期:2024-12-14 07:39:27 浏览:13 分类:玩电脑

Hyper-V 等待合并


[玩转系统] Hyper-V 等待合并

今天我删除了旧快照并计划发布一个新快照。当我准备运行这个命令时:

get-vm chi* | checkpoint-vm -snapshotname "Safety Snapshot"

我意识到磁盘仍在从我刚刚完成的快照删除中合并,我应该等到这完成。当然,我不想不断运行 Get-VM 来检查状态。所以我构建了一个简单的后台作业来在合并时循环。我使用了这个命令:


while (get-vm chi* | where status -eq "merging disks") {
write-host "." -nonewline 
start-sleep -seconds 1
}

只要 Get-VM 表达式为 true,PowerShell 就会运行脚本块。在这种情况下,我正在写一个 .指示进度,然后休眠 1 秒。我可能应该走 5 或 10 秒。不管怎样,这现在作为后台作业运行。我可以定期检查工作情况。或者使用等待作业。

一旦我看到作业已完成,我就可以创建快照。由于这也可能需要时间才能完成,因此我将使用 Checkpoint-VM 的 -AsJob 参数。我想我可以在等待的工作中添加该命令。也许下次我会的。我真正需要做的是编写一个脚本来清除旧快照,等待合并完成,然后拍摄新快照。我想它可能看起来像这样,尽管我还没有测试过。


#requires -version 3.0
#requires -module Hyper-V

#remove existing snapshots
Write-Host "Removing existing snapshots" -ForegroundColor Green
Get-VMSnapshot -name "safety snapshot" -VMName CHI*  | Remove-VMSnapshot

#wait for disk merges to complete
Write-Host "Waiting for disks to merge" -ForegroundColor Green
while (Get-VM chi* | where status -eq "merging disks") {
  Write-Host "." -nonewline  -ForegroundColor green
  Start-Sleep -seconds 10
}

#take new snapshots
Write-Host "Taking new snapshot" -ForegroundColor Green
Get-VM -Name CHI* | Checkpoint-VM -SnapshotName "Safety Snapshot"

Write-Host "Script complete." -ForegroundColor Green

我会将整个脚本作为后台作业运行。实际上,我什至可以更进一步,将其作为计划的 PowerShell 作业运行,这样我就不必再考虑这个问题了。

您需要 登录账户 后才能发表评论

取消回复欢迎 发表评论:

关灯