2022新版Azure SDK for .NET如何获取VM主网卡私有IP地址
新版Azure .NET管理SDK获取虚拟机私有IP实现方式
新版Track 2版Azure .NET管理SDK没有在VirtualMachineResource类型上直接暴露私有IP相关属性。和旧版SDK将关联资源字段拉平封装的设计不同,新版SDK严格对齐Azure资源的实际层级关系:虚拟机的私有IP属于其绑定的网络接口(NIC)资源,不属于VM资源本身,按以下两步即可拿到目标值:
- 获取VM关联的所有网络接口
调用已获取到的VirtualMachineResource实例的GetVirtualMachineNetworkInterfaces方法,就能拿到该虚拟机绑定的全部NIC资源引用:// 此处vm为你已查询到的目标虚拟机实例 var nicReferences = vm.GetVirtualMachineNetworkInterfaces().ToList(); - 遍历NIC读取IP配置中的私有IP
从VM关联关系拿到的NIC是轻量引用对象,需要先调用Get()或GetAsync()拉取完整NIC资源数据,再从IPConfigurations属性下读取私有IP:foreach (var nicRef in nicReferences) { var nic = nicRef.Get().Value; foreach (var ipConfig in nic.Data.IPConfigurations) { // 对应IP配置的私有IP地址 var privateIpAddress = ipConfig.PrivateIPAddress; // 如需获取和旧版SDK默认返回一致的主IP,可通过Primary属性筛选 if (nic.Data.Primary == true && ipConfig.Primary == true) { var vmPrimaryPrivateIp = ipConfig.PrivateIPAddress; } } }
注意:如果虚拟机配置了多块弹性网卡、单块网卡绑定了多个IP配置,遍历会返回多条IP记录,按需筛选即可。
内容的提问来源于stack exchange,提问作者AFAde
相关产品推荐
相关产品推荐

