How to Configure Volume Shadow Copy Service (VSS) on Windows Server 2025
The Volume Shadow Copy Service (VSS) is a foundational Windows technology that enables point-in-time, consistent snapshots of disk volumes — even while files are open and applications are actively writing to them. VSS coordinates with VSS providers (storage drivers), VSS writers (application-specific components like those for SQL Server, Exchange, and Active Directory), and VSS requestors (backup software) to create crash-consistent or application-consistent snapshots called shadow copies. On Windows Server 2025, VSS powers the Previous Versions feature for end-user self-service file recovery, underpins Windows Server Backup, and is used by every major backup product including Veeam, Azure Backup, and Acronis. This guide covers enabling and scheduling shadow copies, managing VSS storage, using Previous Versions, key vssadmin commands, understanding VSS writers, and troubleshooting common VSS errors.
Prerequisites
- Windows Server 2025 with NTFS or ReFS formatted volumes (VSS shadow copies require NTFS; ReFS has limited VSS support)
- Sufficient disk space for shadow copy storage — Microsoft recommends at least 10% of the volume size, with a minimum of 300 MB
- Administrator privileges on the server
- Volume Shadow Copy Service (VSS) is a Windows component — no additional installation required
- For network share shadow copies, ensure the Volume Shadow Copy Service is enabled on both the file server and client machines
Step 1: Enable VSS Shadow Copies on a Volume
Shadow copies can be enabled per-volume. Once enabled, Windows creates automatic snapshots according to a configurable schedule, allowing users and administrators to recover previous versions of files without involving the backup team. Enable shadow copies through the GUI or PowerShell:
# View current shadow copies on all volumes
vssadmin list shadows
# View shadow copies on a specific volume
vssadmin list shadows /for=D:
# Enable shadow copies on D: via PowerShell (WMI method)
# This creates the default VSS schedule (7:00 AM and 12:00 PM daily)
$Volume = Get-WmiObject -Class Win32_ShadowCopy -Filter "VolumeName='D:\'" |
Select-Object -First 1
# Create a one-time manual shadow copy using WMI
$ShadowClass = [WMICLASS]"\.rootcimv2:Win32_ShadowCopy"
$NewShadow = $ShadowClass.Create("D:", "ClientAccessible")
Write-Host "Created shadow copy ID: $($NewShadow.ShadowID)"
# List all shadow copies with readable format
Get-WmiObject Win32_ShadowCopy | Select-Object ID, VolumeName, InstallDate, Count | Format-Table -AutoSize
Enable VSS via the GUI
- Open File Explorer, right-click on the volume (e.g., D:), and select Properties.
- Click the Shadow Copies tab.
- Select the volume in the list and click Enable.
- Click Yes when prompted to enable shadow copies using default settings.
- Windows will immediately create the first shadow copy and apply the default schedule.
Step 2: Configure the VSS Shadow Copy Schedule
The default shadow copy schedule creates snapshots at 7:00 AM and 12:00 PM on weekdays. This is often insufficient for servers with high file activity. Customize the schedule using Task Scheduler to create snapshots at appropriate intervals for your environment:
# View the current VSS schedule configuration
vssadmin list schedule
# The default VSS shadow copy tasks appear in Task Scheduler
# List existing VSS-related scheduled tasks
Get-ScheduledTask | Where-Object { $_.TaskPath -like "*Shadow*" } |
Select-Object TaskName, TaskPath, State
# Create a custom shadow copy schedule using Task Scheduler
# This example creates shadow copies of D: every 4 hours (06:00, 10:00, 14:00, 18:00, 22:00)
$ShadowCopyAction = New-ScheduledTaskAction `
-Execute "vssadmin" `
-Argument "create shadow /for=D: /autoretry=15"
$ShadowCopyTrigger1 = New-ScheduledTaskTrigger -Daily -At "06:00"
$ShadowCopyTrigger2 = New-ScheduledTaskTrigger -Daily -At "10:00"
$ShadowCopyTrigger3 = New-ScheduledTaskTrigger -Daily -At "14:00"
$ShadowCopyTrigger4 = New-ScheduledTaskTrigger -Daily -At "18:00"
$ShadowCopyTrigger5 = New-ScheduledTaskTrigger -Daily -At "22:00"
$ShadowCopySettings = New-ScheduledTaskSettingsSet `
-MultipleInstances IgnoreNew `
-RunOnlyIfNetworkAvailable $false
$ShadowCopyPrincipal = New-ScheduledTaskPrincipal `
-UserId "SYSTEM" `
-RunLevel Highest
Register-ScheduledTask `
-TaskName "VSS-ShadowCopy-DriveD-Every4Hours" `
-TaskPath "MicrosoftWindowsVolume Shadow Copy" `
-Action $ShadowCopyAction `
-Trigger $ShadowCopyTrigger1, $ShadowCopyTrigger2, $ShadowCopyTrigger3, $ShadowCopyTrigger4, $ShadowCopyTrigger5 `
-Settings $ShadowCopySettings `
-Principal $ShadowCopyPrincipal `
-Description "Creates VSS shadow copies of D: every 4 hours"
Step 3: Configure VSS Storage Area Size
Windows limits the total storage used by shadow copies to prevent them from consuming an entire volume. When the storage area fills up, Windows automatically deletes the oldest shadow copies to make room for new ones. Configure the storage limit to align with your retention requirements:
# View current shadow copy storage allocation for all volumes
vssadmin list shadowstorage
# Set maximum shadow copy storage for D: to 20 GB
# Shadow copies can be stored on the same volume or a dedicated volume
vssadmin resize shadowstorage /for=D: /on=D: /maxsize=20GB
# Store shadow copies for D: on a dedicated E: volume (recommended for busy servers)
# This reduces I/O contention on the data volume
vssadmin resize shadowstorage /for=D: /on=E: /maxsize=50GB
# Set unlimited shadow copy storage (VSS will use all available space — use with caution)
vssadmin resize shadowstorage /for=D: /on=E: /maxsize=UNBOUNDED
# Check how much space shadow copies are currently consuming
vssadmin list shadowstorage
Storing shadow copy data on a separate volume (the /on= parameter) is strongly recommended for high-activity file servers. This separates the I/O load of shadow copy writes from normal user data reads and writes, improving overall performance and making it easier to predict storage consumption.
Step 4: Access Previous Versions for File Recovery
Shadow copies power the Previous Versions feature that allows users to restore their own accidentally deleted or overwritten files without administrator intervention. This is one of the most valuable self-service IT capabilities available in Windows Server 2025:
# List all available previous versions of a specific file (requires PowerShell with admin rights)
$FilePath = "D:DataReportsAnnual-Report-2026.docx"
$ParentFolder = Split-Path $FilePath -Parent
# Get shadow copies containing this path
Get-WmiObject Win32_ShadowCopy | ForEach-Object {
$ShadowPath = $_.DeviceObject + "" + ($ParentFolder -replace "^w:\", "")
if (Test-Path $ShadowPath) {
$ShadowFiles = Get-ChildItem -Path $ShadowPath -Filter (Split-Path $FilePath -Leaf) -ErrorAction SilentlyContinue
if ($ShadowFiles) {
foreach ($ShadowFile in $ShadowFiles) {
[PSCustomObject]@{
ShadowCopyID = $_.ID
Created = $_.InstallDate
ShadowFilePath = $ShadowFile.FullName
Size = $ShadowFile.Length
}
}
}
}
}
# Copy a specific file version from a shadow copy to a recovery location
$ShadowCopy = Get-WmiObject Win32_ShadowCopy |
Sort-Object InstallDate -Descending |
Select-Object -First 1
$ShadowDevicePath = $ShadowCopy.DeviceObject
cmd /c mklink /d "C:ShadowMount" "$ShadowDevicePath"
# Now browse C:ShadowMount as a point-in-time view of the volume
Copy-Item "C:ShadowMountDataReportsAnnual-Report-2026.docx" "D:Recovery" -Force
# Remove the mount point when done
cmd /c rmdir "C:ShadowMount"
Step 5: Key vssadmin Commands Reference
The vssadmin command-line tool is the primary interface for managing shadow copies from the command line and scripts. The following commands cover the most frequently used operations:
# List all shadow copies on the system
vssadmin list shadows
# List shadow copies for a specific volume
vssadmin list shadows /for=D:
# Create a new shadow copy manually
vssadmin create shadow /for=D:
# Delete ALL shadow copies for a volume (irreversible — use with caution)
vssadmin delete shadows /for=D: /all /quiet
# Delete only the oldest shadow copy for a volume (frees space)
vssadmin delete shadows /for=D: /oldest /quiet
# Delete a specific shadow copy by its shadow ID
vssadmin delete shadows /shadow={GUID-of-shadow-copy} /quiet
# List shadow copy providers (hardware and software providers)
vssadmin list providers
# List shadow copy storage areas
vssadmin list shadowstorage
# Query available shadow copy volumes
vssadmin list volumes
Step 6: Understand and Manage VSS Writers
VSS writers are application-specific components that coordinate with VSS to ensure application data is in a consistent state during snapshot creation. If a writer is in a failed or waiting state, backups that depend on it will fail or produce inconsistent application data:
# List all registered VSS writers and their current state
vssadmin list writers
# Expected output shows writers like:
# Writer name: 'Task Scheduler Writer' State: [1] Stable Last error: No error
# Writer name: 'VSS Metadata Store Writer' State: [1] Stable Last error: No error
# Writer name: 'System Writer' State: [1] Stable Last error: No error
# Writer name: 'SqlServerWriter' State: [1] Stable Last error: No error
# Writer name: 'NTDS' State: [1] Stable Last error: No error (Active Directory)
# A writer in a failed state shows: State: [8] Failed
# Restart failing VSS writers by restarting their associated service
# Common writer-to-service mappings:
# SqlServerWriter → MSSQLSERVER (SQL Server service)
# IIS Writer → W3SVC
# Registry Writer → VSS (Shadow Copy Volume service itself)
# NTDS → NTDS (Active Directory Domain Services)
# Restart the VSS service to clear transient writer errors
Restart-Service -Name VSS -Force
# Restart SQL Server VSS writer specifically
Restart-Service -Name SQLWriter -Force
# Verify writers are stable after restart
Start-Sleep -Seconds 10
vssadmin list writers | Select-String "Writer name|State|Last error"
Step 7: Troubleshoot Common VSS Errors
VSS errors appear in the Application and System event logs. The two most common errors in production environments are Event ID 8193 and Event ID 12293:
# Search for VSS errors in the event log
Get-WinEvent -FilterHashtable @{
LogName = 'Application'
ProviderName = 'VSS'
Level = 2 # Error
StartTime = (Get-Date).AddDays(-7)
} | Select-Object TimeCreated, Id, Message | Format-List
# Event ID 8193: VSS_E_VOLUME_NOT_SUPPORTED — volume not eligible for shadow copies
# Fix: ensure NTFS format, enable shadow copies explicitly on the volume
# Event ID 12293: Volume Shadow Copy Service error: Error calling a routine on a Shadow Copy Provider
# Fix: restart the VSS service and re-register COM components
Net stop vss
Net stop swprv # Microsoft Software Shadow Copy Provider service
regsvr32 /s ole32.dll
regsvr32 /s vss_ps.dll
vssvc /register
regsvr32 /s /i swprv.dll
regsvr32 /s /i eventcls.dll
regsvr32 /s es.dll
regsvr32 /s stdprov.dll
regsvr32 /s vssui.dll
regsvr32 /s msxml.dll
regsvr32 /s msxml3.dll
Net start swprv
Net start vss
# Verify VSS COM registration is intact
sc query vss
vssadmin list writers
Conclusion
The Volume Shadow Copy Service is a core Windows Server 2025 component that enables consistent, point-in-time data snapshots without interrupting active workloads. By configuring VSS shadow copies on your data volumes, setting appropriate storage limits, establishing a snapshot schedule that aligns with your recovery time objectives, and ensuring VSS writers for critical applications like SQL Server and Active Directory are healthy, you provide a fast, low-overhead recovery safety net for your users. VSS shadow copies are not a replacement for a full backup strategy — they are limited to the local server and do not protect against disk failure or site-level disasters — but as a complement to Windows Server Backup or Azure Backup, they enable rapid self-service recovery that dramatically reduces helpdesk ticket volume for common file recovery requests.