Windows Server ships a free full-server image backup tool. Most people never install it because it's an optional feature and the GUI is buried. The CLI is fine — wbadmin does block-level, VSS-consistent, bare-metal-capable images, no license, no agent.
It's not a replacement for offsite file backups. It's the thing that gets a dead box booting again in one restore, and it pairs well with restic for granular offsite.
TL;DR — install and take a bare-metal image of C: to E::
Install-WindowsFeature Windows-Server-Backup
wbadmin start backup -backupTarget:E: -include:C: -allCritical -vssFull -quiet
Details below.
Install the feature
It's not on by default. PowerShell:
Install-WindowsFeature Windows-Server-Backup -IncludeAllSubFeature
That gives you both wbadmin.exe and the WindowsServerBackup (WB*) PowerShell module. No reboot. Confirm:
Get-WindowsFeature Windows-Server-Backup
Get-Command -Module WindowsServerBackup
If you're still on a fresh box, do the initial setup checklist first — disk layout matters here.
One-off bare-metal image
wbadmin start backup -backupTarget:E: -include:C: -allCritical -vssFull -quiet
Breaking it down:
-allCriticalis the important flag. It pulls in every volume holding components needed to boot and run the OS — the system reserved partition, EFI/boot, the OS volume, and the system state. Without it you get a file backup, not something you can bare-metal recover from. With it, the resulting image is bootable on replacement hardware.-include:C:adds the C: data volume explicitly.-allCriticalalready grabs it on most layouts, but being explicit doesn't hurt.-vssFulldoes a full VSS backup and resets each application's backup history (clears the archive bit / log truncation eligibility). Use it for a standalone server. If something else owns your backup chain (rare on a single box), use-vssCopyinstead so you don't disturb its tracking.-quietsuppresses the y/n prompt so it runs unattended.
VSS — the Volume Shadow Copy Service — is what makes this consistent. It snapshots the volume at a point in time so open files and running databases get captured in a coherent state instead of mid-write. SQL Server, AD (ntds.dit), the registry — all have VSS writers that flush before the snapshot. That's why wbadmin can image a live, running server without taking it down.
Scheduled backups
The classic CLI path:
wbadmin enable backup -addtarget:{disk-id} -schedule:02:00 -include:C: -allCritical -vssFull -quiet
Get the target disk identifier first:
wbadmin get disks
Use the disk identifier GUID, not a drive letter — a scheduled target gets dedicated (see the gotcha below), so it loses its letter anyway.
PowerShell WB* module path
The cmdlets are more readable and scriptable. Build a policy object, attach bare-metal recovery, set target and schedule, then commit:
$policy = New-WBPolicy
# capture everything needed for bare-metal recovery (critical volumes + system state)
Add-WBBareMetalRecovery -Policy $policy
# pick the dedicated backup disk
$disk = Get-WBDisk | Where-Object { $_.Properties -notcontains "ValidTarget" } | Select-Object -First 1
$target = New-WBBackupTarget -Disk $disk -Label "WSB"
Add-WBBackupTarget -Policy $policy -Target $target
# daily at 02:00
Set-WBSchedule -Policy $policy -Schedule ([datetime]"02:00")
# enable VSS full
Set-WBVssBackupOption -Policy $policy -VssFullBackup
# commit it as the active scheduled policy
Set-WBPolicy -Policy $policy
Check what's active and history:
Get-WBPolicy
Get-WBSummary
Target gotchas
This trips everyone up:
- A scheduled disk target gets reformatted and dedicated. Windows takes the whole disk, wipes it, removes the drive letter, and uses it exclusively for backups. Do not point this at a disk with anything on it you want to keep. A one-off
wbadmin start backup -backupTarget:E:does not dedicate — it just writes aWindowsImageBackupfolder. The scheduledenable backuppath dedicates. - The target can't be a volume you're backing up. You can't image C: onto C:. Separate physical disk, always.
- A network share target keeps only the latest backup.
-backupTarget:\\nas\backupsworks, but each run overwrites the previous one — no rotation, no version history on a share. A local dedicated disk keeps multiple versions until it fills, then rotates oldest-out automatically. If you need versioned offsite, that's restic's job, not this.
Bare-metal recovery
The whole point. Dead disk, new hardware, or a hosed OS:
- Boot the Windows Server installation media (same edition) or a WinRE recovery drive.
- Choose Repair your computer → Troubleshoot → System Image Recovery.
- Point it at the backup location (local disk or
\\nas\backups). It finds the latestWindowsImageBackup, you confirm, it restores the critical volumes and reboots into a working server.
From a WinRE/WinPE command prompt you can drive it by hand. List what's available, then recover:
wbadmin get versions -backupTarget:E:
wbadmin start sysrecovery -version:06/04/2026-02:00 -backupTarget:E: -machine:SRV01 -recreateDisks -quiet
-recreateDisks repartitions to match the original layout — that's what makes "new bare disk" work.
Restore single items
You don't need bare-metal for "I deleted a file." From the running OS:
wbadmin get versions
wbadmin start recovery -version:06/04/2026-02:00 -items:C:\data\report.xlsx -itemtype:File -recoveryTarget:D:\restore -quiet
-itemtype:File for files/folders. -recoveryTarget keeps it out of harm's way instead of overwriting the live copy. There's -itemtype:Volume and -itemtype:App too (for VSS-aware apps like SQL).
Gotchas
VSS writer failures kill a backup silently-ish. If a writer is in a failed/timeout state,
wbadmineither skips that component or errors out. Check writer health before trusting a scheduled run:vssadmin list writersAny writer not showing
State: [1] StablewithLast error: No erroris a problem. The usual fixes: free up disk space, restart the offending service (or its VSS provider), reboot. SQL and Hyper-V writers are the common offenders.Retention is "until the disk is full." There's no
-keep-daily 7. The dedicated disk holds as many full+incremental versions as fit, then auto-prunes oldest. Size the backup disk to at least 1.5× the source if you want meaningful history. Network share keeps exactly one. Plan accordingly.Incrementals are block-level, fulls are periodic. After the first full, WSB does block-level incrementals via VSS, but it still rolls a periodic full. Don't be surprised when a "nightly" run occasionally takes much longer.
Encrypted source, encrypted target are independent. If C: is BitLocker-encrypted, the backup lands unencrypted on the target disk unless you BitLocker the backup disk too. A dedicated backup disk with no drive letter is awkward to encrypt — keep that disk physically controlled, or accept the restic path for encrypted offsite.
When to use which
- wbadmin / WSB — full server image, disaster recovery, "get the box booting again." Fast restore, free, local. Weak on rotation and offsite.
- restic — granular file-level, encrypted, deduplicated, offsite, real retention policies. Won't bare-metal a dead OS by itself.
Run both. wbadmin for the image, restic for the files and the offsite copy. They cover different failure modes.
Verify
A backup you haven't restored isn't a backup. Minimum checks:
wbadmin get versions
vssadmin list writers
Get-WBSummary | Format-List LastBackupResultHR, LastSuccessfulBackupTime, NextBackupTime
LastBackupResultHR should be 0. Anything else, dig into the Microsoft-Windows-Backup event log channel. Then actually do the drill: take a throwaway VM, restore the image into it from WinRE, confirm it boots. Once a quarter. The first time you find out your VSS writers were broken should not be during an outage.