【问题标题】:Issue in Disable Network interface Card of VM from the VMWare using vsphere-automation-sdk.net in c#在 c# 中使用 vsphere-automation-sdk.net 从 VMWare 禁用 VM 的网络接口卡中的问题
【发布时间】:2019-01-01 09:43:14
【问题描述】:

这是我在 VMware 中禁用 VM 网络接口卡的代码。它运行良好,所有凭据都正确无误。它的编码与 sdk 文档中提到的相同。但是在运行后,当我在 VMWare 上看到 VM 时,没有禁用 NIC。任何人请帮我解决这个问题。谢谢你。

基本上,我们为客户提供 DRaaS。因此,对于 DR 测试,我们尝试在同一个 VMWare 上创建现有 VM 的新 VM 克隆。但是当我们克隆 VM 时,它的 NIC 与现有 VM 冲突。谢谢。

VMTypes.PlacementSpec vmPlacementSpec = new VMTypes.PlacementSpec();

VMTypes.FilterSpec VMFilterSpec = new VMTypes.FilterSpec();

HashSet<string> datacenters = new HashSet<string>
{
    GetDatacenter(serviceManager, vmModel.DataCenterName)
};

VMFilterSpec.SetNames(new HashSet<String> { vmModel.vmName });
VMFilterSpec.SetDatacenters(datacenters);

VM vmservice = serviceManager.VapiConnection.GetService<VM>();

List<VMTypes.Summary> vmsummarize = vmservice.List(VMFilterSpec);

if (vmsummarize.Count >= 0)
{
    string Vm_Id = vmsummarize[0].GetVm();
    if (Vm_Id != null)
    {
        Network netWork = serviceManager.VapiConnection.GetService<Network>();

            VMTypes.Info VMConfigInfo = vmservice.Get(Vm_Id);
            Dictionary<string, EthernetTypes.Info> dictOfEthernetAdapters = VMConfigInfo.GetNics();
            foreach (var item in dictOfEthernetAdapters)
            {
                EthernetTypes.Info NetworkDetails = item.Value;
                NetworkDetails.SetWakeOnLanEnabled(false);
                NetworkDetails.SetState(ConnectionState.UNRECOVERABLE_ERROR);
                NetworkDetails.SetStartConnected(false);
                NetworkDetails.SetAllowGuestControl(false);
            }
    }
}

【问题讨论】:

  • Q1:您如何定义“禁用”?这是否意味着网卡已断开连接或其他? Q2:你试过用NOT_CONNECTED替换UNRECOVERABLE_ERROR吗?
  • 是的,我试过这个,但没用。谢谢。

标签: c# api vmware vsphere nic


【解决方案1】:

最后我自己做了。我发现要禁用网卡,我必须关闭电源然后再打开电源。感谢所有查看者查看我的问题。

VMTypes.PlacementSpec vmPlacementSpec = new VMTypes.PlacementSpec();

        VMTypes.FilterSpec VMFilterSpec = new VMTypes.FilterSpec();

        HashSet<string> datacenters = new HashSet<string>
        {
            GetDatacenter(serviceManager, vmModel.DataCenterName)
        };

        VMFilterSpec.SetNames(new HashSet<String> { vmModel.vmName });
        VMFilterSpec.SetDatacenters(datacenters);

        VM vmservice = serviceManager.VapiConnection.GetService<VM>();

        List<VMTypes.Summary> vmsummarize = vmservice.List(VMFilterSpec);

        if (vmsummarize.Count >= 0)
        {
            string Vm_Id = vmsummarize[0].GetVm();
            if (Vm_Id != null)
            {
                Power power = serviceManager.VapiConnection.GetService<Power>();
                Network netWork = serviceManager.VapiConnection.GetService<Network>();
                PowerTypes.Info powertype = power.Get(Vm_Id);

                if (powertype.GetState().Name == "POWERED_ON")
                {
                    Console.WriteLine("Power Off starting ");
                    power.Stop(Vm_Id);
                    Console.WriteLine("Powered Off Now ");

                    VMTypes.Info VMConfigInfo = vmservice.Get(Vm_Id);
                    Dictionary<string, EthernetTypes.Info> dictOfEthernetAdapters = VMConfigInfo.GetNics();
                    foreach (var item in dictOfEthernetAdapters)
                    {
                        EthernetTypes.Info NetworkDetails = item.Value;
                        NetworkDetails.SetWakeOnLanEnabled(false);
                        NetworkDetails.SetState(ConnectionState.UNRECOVERABLE_ERROR);
                        NetworkDetails.SetStartConnected(false);
                        NetworkDetails.SetAllowGuestControl(false);
                    }
                    Console.WriteLine("Power ON starting ");
                    power.Start(Vm_Id);
                    Console.WriteLine("Powered ON Now ");
                }
                else if (powertype.GetState().Name == "POWERED_OFF")
                {
                    VMTypes.Info VMConfigInfo = vmservice.Get(Vm_Id);
                    Dictionary<string, EthernetTypes.Info> dictOfEthernetAdapters = VMConfigInfo.GetNics();
                    foreach (var item in dictOfEthernetAdapters)
                    {
                        EthernetTypes.Info NetworkDetails = item.Value;
                        NetworkDetails.SetWakeOnLanEnabled(false);
                        NetworkDetails.SetState(ConnectionState.UNRECOVERABLE_ERROR);
                        NetworkDetails.SetStartConnected(false);
                        NetworkDetails.SetAllowGuestControl(false);
                    }
                    Console.WriteLine("Powered ON started ");
                    power.Start(Vm_Id);
                    Console.WriteLine("Powered ON Now ");
                }
            }
        }
        else
        {
            Console.WriteLine("Index was out of range");
        }

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2021-05-18
    • 2021-11-28
    • 1970-01-01
    • 2017-01-13
    • 2023-03-13
    • 2010-11-22
    • 1970-01-01
    相关资源
    最近更新 更多