Solved

Virtual Server 2005 R2 does not restart from Saved state after backup

Posted on 2008-06-23
2
795 Views
Last Modified: 2010-04-21
I have MS Virtual Server 2005 R2 running on Windows Server 2003 R2 Enterprise 32bit with several instances of VM servers. When a backup of the host server takes place, one or more of the virtual servers will  go into a saved state and not start backup. Is there a script to check the state of a virtual server/device and restart it from this saved state? It appears some what to be ramdom on what instance does not start backup.
0
Comment
Question by:mstraley
2 Comments
 
LVL 2

Accepted Solution

by:
Kelv1979 earned 500 total points
Comment Utility
Hi

Credit for this belongs to David Wang really who produced the script i use for compacting my VHDs, check out the full script at http://blogs.msdn.com/david.wang/archive/2006/04/17/HOWTO-Perform-VHD-Maintenance-Automatically.aspx

However, if you just want to check the state and then start up the VHD the bit you need is below. Save it as a .js file and call it from the command prompt using cscript filename.js

Hope this helps


var ERROR_FILE_NOT_FOUND    = 2;

var ERROR_INVALID_PARAMETER = 87;
 

var GUEST_OS_SLEEP_RESOLUTION = 5000;

var CLEAR_LINE = String.fromCharCode( 8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8 );

var CRLF = "\r\n";
 

var VM_STATE_OFF            = 1;

var VM_STATE_SAVED          = 2;

var VM_STATE_RUNNING        = 5;

var VM_STATE_PAUSED         = 6;
 

var strServer               = "SERVER_NAME";

var strVMName               = "VM_NAME";
 

var Fso     = new ActiveXObject( "Scripting.FileSystemObject" );

var objVS   = new ActiveXObject( "VirtualServer.Application", strServer );

var objVM   = objVS.FindVirtualMachine( strVMName );

var task;
 

//

// Locate the named Virtual Machine

// If it is not found, bail.

//

if ( null == objVM )

{

    LogEcho( "Virtual Machine " + "\"" + strVMName + "\"" + " was not found on server " + strServer );

    Quit( ERROR_FILE_NOT_FOUND );

}
 

LogEcho( "Selected Virtual Machine " + "\"" + strVMName + "\"" + " on server " + strServer );
 

//

// Virtual Machine is not running. Start/resume it

//
 

if ( objVM.State != VM_STATE_RUNNING )

{

    LogEcho( "VM is NOT already running." );
 

    if ( objVM.State == VM_STATE_OFF ||

         objVM.State == VM_STATE_SAVED )

    {

        LogEcho( "Starting VM..." );

        task = objVM.Startup();

        WaitForTask( task );

    }

    else if ( objVM.State == VM_STATE_PAUSED )

    {

        LogEcho( "Resuming VM..." );

        task = objVM.Resume();

    }

    else

    {

        LogEcho( "Unexpected VM State: " + objVM.State );

        Quit( ERROR_INVALID_PARAMETER );

    }

}

else

{

    LogEcho( "VM is already running." );

}
 

function Quit( errorNumber )

{

    WScript.Quit( errorNumber );

}
 

function LogEcho( str )

{

    WScript.Echo( str );

}
 

function FormatErrorString( e )

{

    return e.number + ": " + e.description;

}
 

function WaitForTask( task )

{

    var complete;

    var strLine = "";

    var cchLine = 0;
 

    while ( (complete = task.PercentCompleted) <= 100 )

    {

        strLine = CLEAR_LINE.substring( 0, cchLine ) + complete + "%   ";

        cchLine = strLine.length;     //this should not exceed CLEAR_LINE
 

        WScript.Stdout.Write( strLine );
 

        if ( complete >= 100 )

        {

            // Delete the % display so that next line is clean.

            WScript.Stdout.Write( CLEAR_LINE );

            break;

        }
 

        WScript.Sleep( GUEST_OS_SLEEP_RESOLUTION );

    }

}

Open in new window

0
 

Author Closing Comment

by:mstraley
Comment Utility
I believe this is what I was looking for, thank you for your help.
0

Featured Post

Why You Should Analyze Threat Actor TTPs

After years of analyzing threat actor behavior, it’s become clear that at any given time there are specific tactics, techniques, and procedures (TTPs) that are particularly prevalent. By analyzing and understanding these TTPs, you can dramatically enhance your security program.

Join & Write a Comment

Hopefully if you are reading this article you have NOT attempted to use an old Hyper-V snapshot on a Domain Controller.  If you have, you're probably beyond frustrated as you have searched Google relentlessly only to find out that doing a snapshot o…
Guide: Build a Hyper-V Cluster Introduction We all know that Hyper-V is a cost effective solution (see http://www.experts-exchange.com/A_7831.html), and now we want to take advantage of it, right?  Unfortunately, hardware fails, leading to dow…
Internet Business Fax to Email Made Easy - With eFax Corporate (http://www.enterprise.efax.com), you'll receive a dedicated online fax number, which is used the same way as a typical analog fax number. You'll receive secure faxes in your email, fr…
Polish reports in Access so they look terrific. Take yourself to another level. Equations, Back Color, Alternate Back Color. Write easy VBA Code. Tighten space to use less pages. Launch report from a menu, considering criteria only when it is filled…

744 members asked questions and received personalized solutions in the past 7 days.

Join the community of 500,000 technology professionals and ask your questions.

Join & Ask a Question

Need Help in Real-Time?

Connect with top rated Experts

15 Experts available now in Live!

Get 1:1 Help Now