Этого можно достичь с помощью планировщика задач и сценария PowerShell с помощью командлета Checkpoint-VM.
Например, чтобы создать контрольную точку виртуальной машины с именем "VM1":
Checkpoint-VM -Name "VM1"
или все работающие виртуальные машины:
Get-VM | Where-Object {$_.State -eq "Running"} | Checkpoint-VM
Не забудьте удалить / объединить контрольные точки. Например, чтобы удалить контрольные точки старше 3 часов:
Get-VM | Get-VMSnapshot | Where-Object {$_.CreationTime -lt (Get-Date).AddHours(-3)} | Remove-VMSnapshot
Get-VM
Checkpoint-VM
Get-VMSnapshot
Remove-VMSnapshot