'vsfilebackup.vbs Set objShell = CreateObject ("WScript.Shell") 'Drive containing Virtual Machines strVMdrive = "D:" 'VHD file path -- start path after drive letter strVHDFilePath = "Vs\w2k3\w2k3.vhd" 'Folder inside VM to back up strVMfolder = "FS Data" 'name of VM to back up strVMname = "w2k3" '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 strBackupLoc = "E:\Backup\VS\" 'available drive letter used to mount shadow copy strTempDrive = "X:" 'available drive letter used to mount vhd image file strVHDMountDrive = "Y" 'Format backup folder path to include VM name 'and a date/time stamp strBackupDir = strBackupLoc & strVMname & "-" &_ strTime & "\" '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) 'mount VHD file from snapshot strVHDMountcmd = "vhdmount /m " & chr(34) & strTempDrive &_ "\" & strVHDFilePath & chr(34) & " " & strVHDMountDrive Result = objshell.run(strVHDMountcmd, vbminimized, TRUE) 'Copy the virtual machine files from the shadow copy strSource = strVHDMountDrive & ":\" & strVMfolder objFSO.CopyFolder strSource, strBackupDir, TRUE 'Unmount VHD File strVHDMountcmd = "vhdmount /u /d " & chr(34) & strTempDrive &_ "\" & strVHDFilePath & chr(34) Result = objshell.run(strVHDMountcmd, vbminimized, 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!")