Hyper-V in Windows 11 offers virtual machine checkpoints (formerly known as snapshots) that capture the state, data, and hardware configuration of a guest at a specific point in time. However, default Hyper-V configurations automatically create checkpoints every time a virtual machine starts—a feature called Automatic Checkpoints. Over time, automatic checkpoints silently generate deep chains of dynamically expanding differencing disks (.avhdx), degrading disk I/O performance and rapidly consuming host physical storage. Furthermore, Hyper-V supports two fundamentally different snapshot architectures: Production Checkpoints and Standard Checkpoints. Using Windows PowerShell, systems engineers can select appropriate checkpoint engines, disable unwanted automatic checkpoints, and manage differencing disk mergers with precision.
Production Checkpoints vs Standard Checkpoints Architecture
Hyper-V provides two distinct checkpoint technologies designed for different operational requirements:
- Production Checkpoints (Default): Employs Volume Shadow Copy Service (VSS) inside Windows guests or file system freezing (
fsfreeze) inside Linux guests. It creates an application-consistent data snapshot without saving active volatile RAM state. When restored, the guest starts up as though recovering from a clean restart, ensuring database integrity in SQL Server, Exchange, or active transaction logs. - Standard Checkpoints: Captures the complete operational execution state, including CPU registers and RAM buffers. When restored, the guest resumes running instantly at the exact microsecond of snapshot creation. While convenient for rapid software debugging, restoring standard checkpoints can cause Active Directory replication USN rollbacks and transactional corruption in distributed databases.
- Disabled: Completely prohibits checkpoint creation on the virtual machine, preventing accidental differential disk bloat.
Auditing Active VM Checkpoint Configurations in PowerShell
To inspect the checkpoint architecture and automatic checkpoint status of all virtual machines, open Windows PowerShell as an Administrator and query Get-VM:
# Query checkpoint settings across all hosted VMs
Get-VM | Select-Object Name, CheckpointType, AutomaticCheckpointsEnabled, SnapshotFileLocation
To inspect active checkpoint chains and differencing disk hierarchies for a specific virtual machine:
Get-VMSnapshot -VMName "Win11-TestLab" | Select-Object Name, SnapshotType, CreationTime, ParentSnapshotName
Disabling Automatic Checkpoints via PowerShell
Automatic Checkpoints create a new differencing snapshot on every VM boot cycle, leading to fragmented .avhdx disk files that complicate backup solutions. To disable automatic checkpoints on a specific virtual machine:
Set-VM -VMName "Win11-TestLab" -AutomaticCheckpointsEnabled $false
To disable automatic checkpoints globally across all existing virtual machines on your Windows 11 host:
Get-VM | Set-VM -AutomaticCheckpointsEnabled $false
To verify that automatic checkpoints are disabled:
Get-VM | Select-Object Name, AutomaticCheckpointsEnabled
Configuring Checkpoint Type: Production vs Standard
Depending on whether you are running production database workloads or conducting ephemeral code debugging, use the -CheckpointType parameter to set the appropriate engine.
To enforce Production Checkpoints with fallback enabled (if VSS fails, Hyper-V creates a Standard Checkpoint):
Set-VM -VMName "Win11-TestLab" -CheckpointType Production
To enforce strict Production Checkpoints with fallback disabled (if the guest VSS daemon fails, checkpoint creation aborts rather than risking database corruption):
Set-VM -VMName "Win11-TestLab" -CheckpointType ProductionOnly
To configure Standard Checkpoints for rapid development environments where saving live execution memory is essential:
Set-VM -VMName "Win11-TestLab" -CheckpointType Standard
To disable checkpointing entirely for high-throughput I/O machines where disk differencing overhead must be strictly avoided:
Set-VM -VMName "Win11-TestLab" -CheckpointType Disabled
Creating and Restoring Checkpoints via PowerShell
To manually capture a checkpoint with a descriptive name before executing system updates or experimental code:
# Create a manual checkpoint
Checkpoint-VM -VMName "Win11-TestLab" -SnapshotName "Pre-Update-Baseline"
To restore a virtual machine back to a previous checkpoint:
Restore-VMSnapshot -VMName "Win11-TestLab" -Name "Pre-Update-Baseline" -Confirm:$false
Merging Differencing Disks and Cleaning Up Snapshots
Deleting a checkpoint merges the differencing disk (.avhdx) back into the parent virtual hard disk (.vhdx). In Hyper-V, this merge operation occurs dynamically in the background while the virtual machine continues running.
To remove a specific checkpoint and merge disk differentials:
Remove-VMSnapshot -VMName "Win11-TestLab" -Name "Pre-Update-Baseline"
To purge all existing checkpoints for a virtual machine and collapse the entire snapshot tree into the base virtual disk:
Get-VM -Name "Win11-TestLab" | Get-VMSnapshot | Remove-VMSnapshot
To verify that the merge completed and that only the clean base disk file remains attached:
(Get-VM -Name "Win11-TestLab").HardDrives.Path
Properly managing checkpoint types and disabling automatic checkpoint generation in Windows 11 prevents storage exhaustion, optimises disk performance, and ensures application integrity across virtualised systems.