之后,我使用方法AddVirtualMachine将现有虚拟机添加到群集。
但是没有相应的方法DeleteVirtualMachine
。
如果我只是从节点中删除虚拟机,则会在群集上留下以下人工制品:
如何通过WMI从Hyper-V群集中删除虚拟机?
答案 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 => { });
}
}