2013-06-03 105 views
2

将云服务与特定虚拟网络关联时,实例会自动从选定的子网范围获取IP。在虚拟网络中获取IP地址

有没有办法从实例本身中动态地知道这个IP?如果是这样,创建实例后立即可以获得这些信息,例如在启动任务执行时?

如果没有,是否有方法可以在实例创建后的任何时候从实例外部以编程方式获取此IP?

我更喜欢PowerShell解决方案,但任何事情都可以。

谢谢。

回答

1

如果来自实例,则在启动时分配IP地址。因此,在执行启动任务(PaaS/Cloud Service)时,您可以通过列举网卡来确定IP地址。或者获得IP端点。

样本的PowerShell(它从未得到过测试)将是这个样子:

[Reflection.Assembly]::LoadWithPartialName("Microsoft.WindowsAzure.ServiceRuntime") 
$ipEndpoint = [Microsoft.WindowsAzure.ServiceRuntime.RoleEnvironment]::CurrentRoleInstance.InstanceEndpoints["Endpoint1"].IPEndpoint 

现在你有$ipEndpoint变量,它是.NET类型IPEndpoint的,并拥有虚拟机的本地IP地址。

+0

不幸的是,这给了我内部的局域网IP(与我做ipconfig时得到的一样),而不是虚拟网络IP。 –

+1

你是什么意思的“虚拟网络IP”?它为您提供直接IP地址(或DIP),而不是部署的虚拟IP地址(VIP,公众名称)。如果您设置了跨网络连接,还会有VNet网关的公共IP地址。所以请更好地解释你需要的确切的IP地址。 – astaykov

+0

虚拟网络中的IP。 –