Freigeben über


ConvertVirtualHardDisk-Methode der Msvm_ImageManagementService-Klasse

Konvertiert eine vorhandene virtuelle Festplatte in einen anderen Typ oder ein anderes Format. Diese Methode erstellt eine neue virtuelle Festplatte und konvertiert die virtuelle Quellfestplatte nicht. Informationen zu Verwendungseinschränkungen für diese Methode finden Sie unter Hinweise.

Syntax

uint32 ConvertVirtualHardDisk(
  [in]  string              SourcePath,
  [in]  string              VirtualDiskSettingData,
  [out] CIM_ConcreteJob REF Job
);

Parameter

SourcePath [in]

Typ: Zeichenfolge

Der vollqualifizierte Pfad der zu konvertierenden virtuellen Quellfestplatte. Diese Datei wird als Ergebnis dieses Vorgangs nicht geändert.

VirtualDiskSettingData [in]

Typ: Zeichenfolge

Eine Zeichenfolgendarstellung der Msvm_VirtualHardDiskSettingData Klasse, die die Attribute der neuen virtuellen Festplatte angibt. Die Eigenschaften Path, Type, Format, ParentPath, BlockSize und LogicalSectorSize müssen festgelegt werden. Die ParentPath-Eigenschaft kann Null sein, wenn sie nicht benötigt wird. Legen Sie die Eigenschaften BlockSize und LogicalSectorSize auf 0 fest, um die Standardwerte zu verwenden.

Um das Format (VHD oder VHDX) der neuen virtuellen Festplatte anzugeben, legen Sie die Erweiterung des Pfads auf den entsprechenden Wert (".vhd" oder ".vhdx") fest. Die Format-Eigenschaft muss mit der Dateinamenerweiterung im Pfad übereinstimmen.

Die LogicalSectorSize-Eigenschaft wird ignoriert.

Auftrag [out]

Typ: CIM_ConcreteJob

Wenn der Vorgang asynchron ausgeführt wird, gibt diese Methode 4096 zurück, und dieser Parameter enthält einen Verweis auf ein Objekt, das von CIM_ConcreteJob abgeleitet wurde.

Rückgabewert

Typ: uint32

Diese Methode kann einen der folgenden Werte zurückgeben.

Abgeschlossen ohne Fehler (0)

Methodenparameter überprüft – Auftrag gestartet (4096)

Fehler (32768)

Zugriff verweigert (32769)

Nicht unterstützt (32770)

Status ist unbekannt (32771)

Timeout (32772)

Ungültiger Parameter (32773)

Das System wird verwendet (32774)

Ungültiger Status für diesen Vorgang (32775)

Falscher Datentyp (32776)

System ist nicht verfügbar (32777)

Nicht genügend Arbeitsspeicher (32778)

Datei nicht gefunden (32779)

Bemerkungen

Mit dieser Methode können nur die folgenden Typen von virtuellen Festplatten verwendet werden:

  • Feste VHD
  • VHDX wurde behoben.
  • Dynamische VHD
  • Dynamische VHDX
  • Differenzierende VHD
  • Differenzierende VHDX

Der Zugriff auf die Msvm_ImageManagementService-Klasse kann durch UAC-Filterung eingeschränkt werden. Weitere Informationen finden Sie unter Benutzerkontensteuerung und WMI.

Beispiele

Im folgenden C#-Beispiel wird eine virtuelle Festplatte konvertiert. Die referenzierten Hilfsprogramme finden Sie unter Allgemeine Hilfsprogramme für die Virtualisierungsbeispiele (V2).

public enum VirtualHardDiskType
{
    Fixed = 2,
    Dynamic = 3,
    Differencing = 4
}

public enum VirtualHardDiskFormat
{
    Unknown = 0,
    Vhd = 2,
    Vhdx = 3
}

public static void ConvertVirtualHardDisk(string sourcePath, string destinationPath, VirtualHardDiskType diskType, VirtualHardDiskFormat diskFormat)
{
    ManagementScope scope = new ManagementScope(@"root\virtualization\V2", null);
    ManagementObject imageService = Utility.GetServiceObject(scope, "Msvm_ImageManagementService");

    ManagementPath path = new ManagementPath()
    {
        Server = null,
        NamespacePath = imageService.Path.Path,
        ClassName = "Msvm_VirtualHardDiskSettingData"
    };

    ManagementClass settingsClass = new ManagementClass(path);
    ManagementObject settingsInstance = settingsClass.CreateInstance();
    settingsInstance["Path"] = destinationPath;
    settingsInstance["Type"] = diskType;
    settingsInstance["Format"] = diskFormat;
    settingsInstance["ParentPath"] = null;
    settingsInstance["MaxInternalSize"] = 0;
    settingsInstance["BlockSize"] = 0;
    settingsInstance["LogicalSectorSize"] = 0;
    settingsInstance["PhysicalSectorSize"] = 0;

    ManagementBaseObject inParams = imageService.GetMethodParameters("ConvertVirtualHardDisk");

    inParams["SourcePath"] = sourcePath;
    inParams["VirtualDiskSettingData"] = settingsInstance.GetText(TextFormat.WmiDtd20);

    ManagementBaseObject outParams = imageService.InvokeMethod("ConvertVirtualHardDisk", inParams, null);
    UInt32 result = (UInt32)outParams["ReturnValue"];
    if (ReturnCode.Completed == result)
    {
        Console.WriteLine("{0} was converted successfully.", inParams["SourcePath"]);
    }
    else if (ReturnCode.Started == result)
    {
        if (Utility.JobCompleted(outParams, scope))
        {
            Console.WriteLine("{0} was converted successfully.", inParams["SourcePath"]);
        }
        else
        {
            Console.WriteLine("Unable to convert {0}", inParams["SourcePath"]);
        }
    }
    else
    {
        // The method failed.
        Console.WriteLine("ConvertVirtualHardDisk failed with error code {0}.", result);
    }

    outParams.Dispose();
    inParams.Dispose();
    imageService.Dispose();
}

Anforderungen

Anforderung Wert
Unterstützte Mindestversion (Client)
Windows 8 [nur Desktop-Apps]
Unterstützte Mindestversion (Server)
Windows Server 2012 [nur Desktop-Apps]
Namespace
Root\Virtualization\V2
MOF
WindowsVirtualization.V2.mof
DLL
Vmms.exe

Siehe auch

ConvertVirtualHardDisk (V1)

CIM_ConcreteJob

Msvm_ImageManagementService