如何从Hyper-V群集中删除虚拟机?
问题描述:
有在其上创建虚拟机群集节点: 如何从Hyper-V群集中删除虚拟机?
后,我使用方法AddVirtualMachine到现有虚拟机添加到集群。
但没有相应的方法DeleteVirtualMachine
。
如果我只是从一个节点中删除虚拟机,那么下面的人工制品留在集群上:
如何通过WMI从Hyper-V集群中删除我的虚拟机?
答
我已反编译Microsoft.FailoverClusters.PowerShell.dll
,发现我们需要使用WMI类MSCluster_ResourceGroup。
这是怎么回事可以通过PowerShell中做到:
(Get-WmiObject -namespace root\mscluster -class MsCluster_ResourceGroup -filter "name='vm-name'").DestroyGroup()
这里是MSCluster_ResourceGroup,我在C#代码中使用对象模型:
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 => { });
}
}