ReconnectParentVirtualHardDisk method of the Msvm_ImageManagementService class
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 - JobStarted (4096)
- Failed (32768)
- Access Denied (32769)
- Not Supported (32770)
- Status is unknown (32771)
- Timeout (32772)
- Invalid parameter (32773)
- System is in use (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 |
|
Namespace |
\\.\Root\Virtualization |
|
MOF |
|
See also
Build date: 7/3/2012