Backing up Hyper-V virtual machines from the command line

Backing up Hyper-V virtual machines from the command line

Rate This
  • Comments 23

Last week I posted about how you can now use Windows Server Backup in Windows Server 2012 to backup virtual machines.  One of the first questions that people had was “how do I do this from the command-line?”  So – let me show you!

The tool you will want to use is “wbadmin.exe”

Backing up a virtual machine is fairly straight forward.  Your command will look like this:

wbadmin start backup –backupTarget:<location to backup to> –hyperv:<list of virtual machines to backup>

Which will result in something like this:

image

Some things to be aware of:

  • Wbadmin will always warn you that the virtual machine will be put into a saved state for backup.  This is wrong.  The virtual machine will only be put into a saved state if it is not running the latest virtual machine additions (or is not a Windows virtual machine).
  • You will be prompted before the backup starts.  You can get around this by adding –force to the end of the command.
  • You can use either the virtual machine name or the virtual machine ID when selecting virtual machines.
  • You can list multiple virtual machines to backup.
  • If you are backing up to a SMB share – new backups will automatically overwrite old backups (i.e. there will only be one backup kept on the share).  This will not happen if you are backing up to a local disk.

Once you have created the backup – you then need to know how to restore it.  This is, unfortunately, more complicated.  The first thing you will need to do is to find the version of the backup and the name of the virtual machine you want to restor.  You can find the version of the backup by running:

wbadmin get versions –backupTarget:<location where you backed up to>

 

image

If the backup was taken a while ago – you may have forgotten the name(s) of the virtual machines that you backed up.  You can find this by running:

wbadmin get items –version:<version string for the backup you want> –backuptarget:<location where you backed up to>

 

image

Once you have this information you can restore the backed up virtual machine by running:

wbadmin start recover –version:<version string for the backup you want> –itemType:hyperv –items:<list of virtual machines to restore> –backuptarget:<location where you backed up to>

image

Cheers,
Ben

Leave a Comment
  • Please add 3 and 7 and type the answer here:
  • Post
  • Thanks for this information, Ben -- will come in very useful.  We are running Windows Server 2012 for DirectAccess, and will be migrating our Hyper-V servers to Windows 2012 during our next hardware upgrade.

  • Hi

    How can one backup "Host Components" from the command line ?

  • Is it possible to achive the same results when using Windows Server 2008 R2 ? If so, how?

  • Is there any way to merge/apply an UNDO disk with the VHD from the command line without running Virtual PC?

    I moved to WIN 8 and need to access the VHDs including all changes recorded in the UNDO disk.

    Best,

    George

  • Unfortunately, this doesn't seem to work with a Windows 2008 Hyper-V Host; the "-hyperv" argument is not recognized by the command line. Thanks anyway...

  • Anyway to do something similar in a cluster with VMs on CSVs?

  • Hi

    How can one backup "Host Components" from the command line ?

  • Is it possible to exclude specific drives when backing up a Hyper-V machine?

  • How do you backup the host component?

  • Never mind, figured it out, I must have had a typo .... wbadmin start backup -backuptarget:G: -hyperv:"Host Component"  will backup the host component.

  • I want to create the backup job once every week, Is there a way to create a regular backup job schedule?

  • Syed:

    Put the commands into a batch file and call the batch file from scheduled tasks in the control panel.

  • Here's a basic script to backup all VMs without typing in the names manually:

    $VMs = Get-VM | foreach {$_.name}

    $VMList = $VMs -join ","

    $VMList = """$VMlist"""

    $Exec = "C:\windows\System32\wbadmin.exe"

    $Arg1 = "start"

    $Arg2 = "backup"

    $Arg3 = "-backuptarget:B:"

    $Arg4 = "-hyperv:$VMlist"

    $Arg5 = "-quiet"

    $Command = "$Exec $Arg1 $Arg2 $Arg3 $Arg4 $Arg5"

    Invoke-Expression $Command

  • If you came straight to this article and wonder why wbadmin is missing.  You need to enable the Windows Server Backup feature.

    "  Add-WindowsFeature Windows-Server-Backup  "

    After doing that you will have wbadmin on your Hyper-V Server.

  • "You will be prompted before the backup starts.  You can get around this by adding –force to the end of the command. "

    Not -force but -quiet

    force don't working in my Windows Server 2012

    But article is very helpful :)

    THANKS!

Page 1 of 2 (23 items) 12