如何从Hyper-V群集中删除虚拟机?

时间:2017-08-02 13:40:01

标签: c# virtual-machine wmi hyper-v

我在其上创建了一个创建虚拟机的集群节点: enter image description here

之后,我使用方法AddVirtualMachine现有虚拟机添加到群集。

enter image description here

但是没有相应的方法DeleteVirtualMachine

如果我只是从节点中删除虚拟机,则会在群集上留下以下人工制品: enter image description here

如何通过WMI从Hyper-V群集中删除虚拟机?

1 个答案:

答案 0 :(得分:0)

我已经反编译Microsoft.FailoverClusters.PowerShell.dll并发现我们需要使用WMI类MSCluster_ResourceGroup

这是通过powershell完成的:

(Get-WmiObject -namespace root\mscluster -class MsCluster_ResourceGroup -filter "name='vm-name'").DestroyGroup()

以下是我在C#代码中使用的MSCluster_ResourceGroup的对象模型:

public class MsResourceGroup : ManagementObjectWrapperBase
{
    public static MsResourceGroup Create(
        ManagementObject fromResourceGroupManagementObject)
    {
        var name = fromResourceGroupManagementObject.GetStringPropertyValue("Name");

        return new MsResourceGroup(
            name: name,
            resourceGroupManagementObject: fromResourceGroupManagementObject);
    }

    private MsResourceGroup(
        string name,
        ManagementObject resourceGroupManagementObject)
        : base(resourceGroupManagementObject)
    {
        Name = name;
    }

    public string Name { get; }

    public void DestroyGroup()
    {
        AsManagementObject.Invoke(
            methodName: "DestroyGroup",
            fillInvocationParameters: inputParameters => { });
    }
}