我正在尝试编写一些Powershell来获取Azure ARM vms(非经典)列表以及其NIC的当前关联IP地址 .
在经典中,这是VM对象的一部分,但在ARM中它是一个单独的对象,我正在努力让Powershell以我想要的方式工作 .
我有以下代码段:
$nic = (((Get-AzureRmVM).NetworkProfile).NetworkInterfaces).Id
ForEach ($i in $nic) {
$nicname = $i.substring($i.LastIndexOf("/")+1)
Get-AzureRmNetworkInterface -Name $nicname -ResourceGroupName RGTEST | Get-AzureRmNetworkInterfaceIpConfig | select-object PrivateIpAddress,PrivateIpAllocationMethod
}
哪个有效,但仅适用于指定资源组“RGTEST”中的VM .
似乎Get-AzureRmNetworkInterface只能在NIC Name和ResourceGroupName中传递时工作,但我似乎无法从VM传入RGname .
可能真的很容易,但我正在努力吧!
4 回答
下面是我用于获取Azure ARM VM的专用和公共IP的脚本 . 如果VM有多个NIC或IpConfig,则可能需要使用循环 .
这是一个脚本,用于获取用于各种任务的相关VM专用/公共IP地址信息 . 它将从MAC OS或Windows OS运行,因为我有一个运行Widows 10 Parallels VM的MAC兼容性 . 根据需要使用它 .
它将导出为CSV并尝试在Excel或CSV扩展中注册的任何内容中打开 . 在下面的示例中,它保存为PS_AzureRM_Get_VMs.ps1,或者只是在PowerShell中将其作为原始代码运行 .
我搜索了很多,终于成功了 . 使用资源组名称和azure vm名称,您可以检索私有或公共IP地址:
我使用此代码获取所有ARM VM,它们的私有IP地址和分配方法,它适用于资源组 .
样本输出:
proddc:10.0.0.4,静态
stagedc:10.1.0.4,静态