You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何修改PowerShell脚本仅返回带快照的虚拟机及对应时间戳

PowerShell脚本调整:仅输出存在快照的Hyper-V虚拟机

现有问题

当前脚本未做快照存在性过滤,执行后会返回环境内全量虚拟机信息,无快照的虚拟机会显示快照数为0、时间戳为空。
原脚本代码:

Get-VM | Format-Table -AutoSize VMName, @{Name="TotalSnapshots";Expression={(Get-VMSnapshot -VM $_ | Measure-Object).Count}},@{Name="TimeStamp";Expression={(Get-VMSnapshot -VM $_ | Select-Object CreationTime).CreationTime}}

原脚本运行效果示例:
全量虚拟机返回结果示例

调整方案

在管道中增加快照数量判断逻辑,提前过滤掉快照数为0的虚拟机,同时优化时间戳取值逻辑,多快照场景默认展示最新快照的创建时间,修改后代码如下:

Get-VM | Where-Object {(Get-VMSnapshot -VM $_ | Measure-Object).Count -gt 0} | Format-Table -AutoSize `
    VMName,
    @{Name="TotalSnapshots";Expression={(Get-VMSnapshot -VM $_ | Measure-Object).Count}},
    @{Name="TimeStamp";Expression={(Get-VMSnapshot -VM $_ | Sort-Object CreationTime -Descending | Select-Object -First 1).CreationTime}}

逻辑说明

  • 新增Where-Object判断块:对每台虚拟机先统计快照总数,仅保留快照数大于0的条目进入后续输出环节,从根源过滤无快照的虚拟机
  • 时间戳字段优化:对单台虚拟机的所有快照按创建时间倒序排列,取第一条(最新创建)的快照时间展示,避免多快照场景下取值异常
  • 最终输出字段包含:虚拟机名称、对应快照总数、最新快照创建时间戳,无快照的虚拟机不会出现在结果中

内容的提问来源于stack exchange,提问作者alokin123

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.02 07:24:17