【发布时间】:2017-08-02 13:40:00
【问题描述】:
之后我使用方法AddVirtualMachine 将现有虚拟机添加到集群。
但是没有对应的方法DeleteVirtualMachine。
如果我只是从节点中删除虚拟机,那么集群中会留下以下人工制品:
如何通过 WMI 从 Hyper-V 集群中删除我的虚拟机?
【问题讨论】:
标签: c# virtual-machine cluster-computing wmi hyper-v
之后我使用方法AddVirtualMachine 将现有虚拟机添加到集群。
但是没有对应的方法DeleteVirtualMachine。
如果我只是从节点中删除虚拟机,那么集群中会留下以下人工制品:
如何通过 WMI 从 Hyper-V 集群中删除我的虚拟机?
【问题讨论】:
标签: c# virtual-machine cluster-computing wmi hyper-v
我反编译了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 => { });
}
}
【讨论】:
MSCluster_ResourceGroup 对象。您可以研究 microsoft docs 上的示例以使该包装器工作 - 这是一个简单的部分 =)