【问题标题】:How to remove virtual machine from Hyper-V cluster?如何从 Hyper-V 集群中删除虚拟机?
【发布时间】:2017-08-02 13:40:00
【问题描述】:

有一个集群节点,我在上面创建虚拟机:

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

但是没有对应的方法DeleteVirtualMachine

如果我只是从节点中删除虚拟机,那么集群中会留下以下人工制品:

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

【问题讨论】:

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


    【解决方案1】:

    我反编译了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 => { });
        }
    }
    

    【讨论】:

    • 什么是“ManagementObjectWrapperBase”。由于“GetStringPropertyValue”,我也无法编译此代码。你能分享完整的文件吗?
    • 抱歉 Ghaffar,即使我可以访问它,我也无法分享完整的源代码。这是一个概念,用它作为灵感来编写你自己的包装器。这里主要是你需要MSCluster_ResourceGroup 对象。您可以研究 microsoft docs 上的示例以使该包装器工作 - 这是一个简单的部分 =)
    • 好的。我得到了它。现在我已经使用“DestroyGroup”成功删除了该对象。感谢您的帮助。
    猜你喜欢
    • 2014-02-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-06-24
    • 1970-01-01
    • 2021-10-20
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多