Listing 1: vsbackup.vbs Script
Set objShell = CreateObject ("WScript.Shell")
'Load current date (formatted as mm-dd-yyyy)
'into variable strToday
strTime = Month(Now) & "-" & Day(Now) & "-" & Year(Now) &_
"_" & hour(now) & "-" & minute(now)
' Backup target folder or UNC path
strBackupDir = "E:\Backup\VS\" & strTime & "\"
'Drive containing Virtual Machines
strVMdrive = "D:"
'VM folder path
strVMfolder = "VS"
'available drive letter used to mount shadow copy
strTempDrive = "X:"
'Prepare shadow copy commands
sExCmd = "CreateVSS.cmd"
Set oFileSys = CreateObject("Scripting.FileSystemObject")
if oFileSys.FileExists(sExCmd) then oFileSys.DeleteFile(sExCmd)
set oExCmd = oFileSys.CreateTextFile(sExCmd, CopyOverwrite)
'create backup folder
Set objFSO = CreateObject("Scripting.FileSystemObject")
Set objFolder = objFSO.CreateFolder(strBackupDir)
' Create Shadow copy of VM drive
oExCmd.WriteLine "vshadow.exe -script=setvar1.cmd -p " &_
strVMdrive
oExCmd.WriteLine "call setvar1.cmd"
oExCmd.WriteLine "vshadow.exe -el=%SHADOW_ID_1%," &_
strTempDrive
oExCmd.Close
Result = objShell.run(sExCmd,vbMinimized, TRUE)
'Copy the virtual machine files from the shadow copy
strSource = strTempDrive & "\" & strVMfolder
objFSO.CopyFolder strSource , strBackupDir, TRUE
' Delete created shadow copy instance
if oFileSys.FileExists(sExCmd) then oFileSys.DeleteFile(sExCmd)
set oExCmd = oFileSys.CreateTextFile(sExCmd, CopyOverwrite)
oExCmd.WriteLine "Echo y | vshadow.exe -da"
oExCmd.Close
Result = objShell.run(sExCmd,vbMinimized, TRUE)
'Backup complete!
wscript.echo("Backup complete!")