我们有多个由 vCenter 管理的 ESXi 服务器;有没有办法获取所有虚拟机中所有快照的列表?
答案1
听起来像是 PowerCLI 的工作!好吧,不管怎样,从 Windows 工作站开始,这就是我所拥有的。
Surly Admin 的博客甚至有一个脚本,您可以复制粘贴该脚本来获取环境中所有虚拟机的所有快照,为了您的方便,我将在下面发布其主要内容。
$Report = Get-VM | Get-Snapshot | Select VM,Name,Description,@{Label="Size";Expression={"{0:N2} GB" -f ($_.SizeGB)}},Created
If (-not $Report)
{ $Report = New-Object PSObject -Property @{
VM = "No snapshots found on any VM's controlled by $VIServer"
Name = ""
Description = ""
Size = ""
Created = ""
}
}
$Report = $Report | Select VM,Name,Description,Size,Created | ConvertTo-Html -Head $Header -PreContent "<p><h2>Snapshot Report - $VIServer</h2></p><br>" | Set-AlternatingRows -CSSEvenClass even -CSSOddClass odd
答案2
答案3
HopelessNoob 的答案非常适合人类可读的报告。有时我更喜欢将我的答案解析为其他 PS 对象。它与 HopelessNoob 的答案非常相似 - 我想我们都从相同的代码片段开始构建我们的脚本:
$VIServer =“vsphere.ad.example.com”
If (-not (Get-PSSnapin VMware.VimAutomation.Core))
{ Try { Add-PSSnapin VMware.VimAutomation.Core -ErrorAction Stop }
Catch { Write-Host "Unable to load PowerCLI, is it installed?" -ForegroundColor Red; Break }
}
Connect-VIServer $VIServer -Credential (Get-Credential) | Out-Null
Get-VM | Get-Snapshot | Select VM,Name,Description,@{Label="Size";Expression={"{0:N2} GB" -f ($_.SizeGB)}},Created | FT
给出:
VM Name Description Size Created
-- ---- ----------- ---- -------
ENETSXS2 VEEAM BACKUP TEMPORARY SNAPSHOT Please do not delete this sn... 19.28 GB 8/11/2014 8:42:18 AM
ENETSDFS-BS VEEAM BACKUP TEMPORARY SNAPSHOT Please do not delete this sn... 16.30 GB 8/11/2014 5:24:44 AM
然后您可以将其输入管道Remove-Snapshot
或者进行过滤或者其他操作。
答案4
这在 vSphere 6.7 (Web Client) 中对我有用:
- 转到存储,然后单击数据存储
- 单击文件选项卡
- 在文件搜索框中输入“snap”
- 它将列出快照文件,您可以根据快照文件名确定虚拟机。