wbadmin — Free Bare-Metal Backup on Windows Server

Free bare-metal backup on Windows Server with wbadmin and Windows Server Backup — one-off image, scheduled policy, and the full WinRE recovery drill.

Share
wbadmin — Free Bare-Metal Backup on Windows Server

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:

  • -allCritical is 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. -allCritical already grabs it on most layouts, but being explicit doesn't hurt.
  • -vssFull does 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 -vssCopy instead so you don't disturb its tracking.
  • -quiet suppresses 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 a WindowsImageBackup folder. The scheduled enable backup path 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\backups works, 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:

  1. Boot the Windows Server installation media (same edition) or a WinRE recovery drive.
  2. Choose Repair your computer → Troubleshoot → System Image Recovery.
  3. Point it at the backup location (local disk or \\nas\backups). It finds the latest WindowsImageBackup, 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, wbadmin either skips that component or errors out. Check writer health before trusting a scheduled run:

    vssadmin list writers
    

    Any writer not showing State: [1] Stable with Last error: No error is 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.


Related posts