Note
Access to this page requires authorization. You can try signing in or changing directories.
Access to this page requires authorization. You can try changing directories.
Fixes broken links between parent and child disk image files.
Syntax
uint32 ReconnectParentVirtualHardDisk(
[in] string ChildPath,
[in] string ParentPath,
[in] boolean Force,
[out] CIM_ConcreteJob REF Job
);
Parameters
-
ChildPath [in]
-
Type: string
A fully qualified path that specifies the ___location of the child disk image file.
-
ParentPath [in]
-
Type: string
A fully qualified path that specifies the ___location of the parent virtual hard disk file.
-
Force [in]
-
Type: boolean
This parameter has no effect.
-
Job [out]
-
Type: CIM_ConcreteJob
A reference to the job (can be NULL if the task is completed).
Return value
Type: uint32
This method can return one of the following values.
-
Completed with No Error (0)
-
Method Parameters Checked - Job Started (4096)
-
Failed (32768)
-
Access Denied (32769)
-
Not Supported (32770)
-
Status is unknown (32771)
-
Timeout (32772)
-
Invalid parameter (32773)
-
System is in used (32774)
-
Invalid state for this operation (32775)
-
Incorrect data type (32776)
-
System is not available (32777)
-
Out of memory (32778)
-
File not found (32779)
Remarks
Access to the Msvm_ImageManagementService class might be restricted by UAC Filtering. For more information, see User Account Control and WMI.
Examples
The following C# example reconnects links between the specified parent and child. The referenced utilities can be found in Common Utilities for the Virtualization Samples.
using System;
using System.Management;
namespace HyperVSamples
{
class ReconnectVHD
{
static void ReconnectParentVirtualHardDisk(string childPath, string parentPath, bool force)
{
ManagementScope scope = new ManagementScope(@"root\virtualization", null);
ManagementObject imageService = Utility.GetServiceObject(scope, "Msvm_ImageManagementService");
ManagementBaseObject inParams = imageService.GetMethodParameters("ReconnectParentVirtualHardDisk");
inParams["ParentPath"] = parentPath;
inParams["ChildPath"] = childPath;
inParams["Force"] = force;
ManagementBaseObject outParams = imageService.InvokeMethod("ReconnectParentVirtualHardDisk", inParams, null);
if ((UInt32)outParams["ReturnValue"] == ReturnCode.Completed)
{
Console.WriteLine("{0} was reconnected successfully.", inParams["ChildPath"]);
}
else
{
Console.WriteLine("Unable to reconnect {0}", inParams["ChildPath"]);
}
inParams.Dispose();
outParams.Dispose();
imageService.Dispose();
}
static void Main(string[] args)
{
if (args != null && args.Length != 3)
{
Console.WriteLine("Usage: ReconnectVHD ChildPath, ParentPath, Force");
Console.WriteLine("Force: True|False");
return;
}
string childPath = args[0];
string parentPath = args[1];
bool force = bool.Parse(args[2]);
ReconnectParentVirtualHardDisk(childPath, parentPath, force);
}
}
}
The following VBScript example reconnects links between the specified parent and child.
option explicit
dim objWMIService
dim managementService
dim fileSystem
const wmiSuccessful = 0
Main()
'-----------------------------------------------------------------
' Main routine
'-----------------------------------------------------------------
Sub Main()
dim computer, childPath, parentPath, force, objArgs
set fileSystem = Wscript.CreateObject("Scripting.FileSystemObject")
computer = "."
set objWMIService = GetObject("winmgmts:\\" & computer & "\root\virtualization")
set managementService = objWMIService.ExecQuery("Select * from Msvm_ImageManagementService").ItemIndex(0)
set objArgs = WScript.Arguments
if WScript.Arguments.Count = 3 then
childPath = objArgs.Unnamed.Item(0)
parentPath = objArgs.Unnamed.Item(1)
force = objArgs.Unnamed.Item(2)
else
WScript.Echo "usage: cscript ReconnectVHD.vbs ChildPath ParentPath Force"
WScript.Echo "Force: true|false"
WScript.Quit(1)
end if
if ReconnectParentVirtualHardDisk(childPath, parentPath, force) then
WriteLog "Done"
WScript.Quit(0)
else
WriteLog "ReconnectVHD failed."
WScript.Quit(1)
end if
End Sub
'-----------------------------------------------------------------
' Execute ReconnectParentVirtualHardDisk
'-----------------------------------------------------------------
Function ReconnectParentVirtualHardDisk(childPath, parentPath, force)
WriteLog Format2("Sub ReconnectParentVirtualHardDisk({0}, {1})", childPath, parentPath)
dim objInParam, objOutParams
ReconnectParentVirtualHardDisk = false
set objInParam = managementService.Methods_("ReconnectParentVirtualHardDisk").InParameters.SpawnInstance_()
objInParam.ChildPath = childPath
objInParam.ParentPath = parentPath
objInParam.Force = force
set objOutParams = managementService.ExecMethod_("ReconnectParentVirtualHardDisk", objInParam)
if objOutParams.ReturnValue = wmiSuccessful then
WriteLog Format2("'{0}' was successfully reconnected to the parent '{1}'.", ChildPath, ParentPath)
ReconnectParentVirtualHardDisk = true
else
WriteLog Format1("ReconnectParentVirtualHardDisk operation failed with error {0}", objOutParams.ReturnValue)
end if
End Function
'-----------------------------------------------------------------
' Create the console log files.
'-----------------------------------------------------------------
Sub WriteLog(line)
dim fileStream
set fileStream = fileSystem.OpenTextFile(".\ReconnectVHD.log", 8, true)
WScript.Echo line
fileStream.WriteLine line
fileStream.Close
End Sub
'------------------------------------------------------------------------------
' The string formatting functions to avoid string concatenation.
'------------------------------------------------------------------------------
Function Format3(myString, arg0, arg1, arg2)
Format3 = Format2(myString, arg0, arg1)
Format3 = Replace(Format3, "{2}", arg2)
End Function
'------------------------------------------------------------------------------
' The string formatting functions to avoid string concatenation.
'------------------------------------------------------------------------------
Function Format2(myString, arg0, arg1)
Format2 = Format1(myString, arg0)
Format2 = Replace(Format2, "{1}", arg1)
End Function
'------------------------------------------------------------------------------
' The string formatting functions to avoid string concatenation.
'------------------------------------------------------------------------------
Function Format1(myString, arg0)
Format1 = Replace(myString, "{0}", arg0)
End Function
Requirements
Minimum supported client |
None supported |
Minimum supported server |
Windows Server 2008 |
End of client support |
None supported |
End of server support |
Windows Server 2012 |
Namespace |
Root\Virtualization |
MOF |
|