我是 powershell 新手,我想创建一个脚本来对所有正在运行的虚拟机进行快照,并删除超过 5 天的快照。我有以下内容:
$Time = 5
$VMs = Get-VM | Where-Object {$._State –eq 'Running'}
foreach($VM in $VMs){
$Snapshots = Get-VMSnapshot $VM
foreach($Snapshot in $Snapshots){
if ($snapshot.CreationTime.AddDays($Time)) {
Remove-VMSnapshot $Snapshot
}
}
Checkpoint-VM $VM
}
但没有作用。
答案1
阅读了一些评论后,我能够解决我遇到的问题。脚本如下所示:
$Days = 4
$VMs = Get-VM | Where-Object {$_.State –eq 'Running'}
foreach($VM in $VMs){
$Snapshots = Get-VMSnapshot $VM
foreach($Snapshot in $Snapshots){
if ($snapshot.CreationTime.AddDays($Days) -lt (get-date)) {
Remove-VMSnapshot $Snapshot
}
}
Checkpoint-VM $VM
}
请注意,我修复了拼写错误,并添加了(get-date)部分,以便我可以将时间与我的变量进行比较。