首页 文章

使用Powershell在Azure Dev Test Lab中获取VM的私有IP

提问于
浏览
0

刚才我开始使用Azure DevTest Lab . 我使用json模板在实验室中创建了一个VM . 我想使用powershell使用VM的公共IP,或者如果可以的话,我想使用模板返回相同的IP .

这里的挑战是根据DTL概念,VM是在除您实验室所在的新资源组之外的新资源组中创建的 . 我可以在门户网站上看到实验室VM资源组的名称,但我无法弄清楚如何使用PowerShell来完成这项工作 . 我正在进行自动化,所以我需要通过PowerShell来实现 .

参考图片 . 实验室似乎位于绿色框中显示的实验室所在的资源组中 . 但是,从技术上讲,实验室VM驻留在动态创建的资源gruop(RG名称模式= labname VM名称一些随机数字)中,在屏幕截图中以浅黄色显示 .

enter image description here

3 回答

  • 0

    好吧,通常一个更优雅的解决方案,选择暴力将是使用 Get-AzureRmResource

    $Resource = Get-AzureRmResource -ResourceId "/subscriptions/$sub_GUID/resourcegroups/$RG_devlab_Name/providers/microsoft.devtestlab/labs/$LabName/virtualmachines/$VMName"
    $Resource.Properties.computeId -match 'resourceGroups/(.+)/providers'
    $RGName = $Matches[1]
    $IP = (Get-AzureRmNetworkInterface -Name $VMName-ResourceGroupName $RGName).IpConfigurations.PrivateIpAddress
    
  • 0

    其他解决方案很有帮助但不完整 . 我这样做 - 我返回的模板的默认输出是vmId . 请参阅模板link

    现在我们需要操作此vmId以获取已创建实验室VM的资源组的名称 .

    $result = New-AzureRmResourceGroupDeployment -ResourceGroupName "aatifdtlrg207912" -TemplateFile "D:\AzureDeploy.json" -TemplateParameterObject $paramValues
    $VMId = $result.outputs.Values.value
    $VMComputeId = (Get-AzureRmResource -Id $VMId).Properties.ComputeId
    $RGNameofVM = $VMComputeId.split("/")
    $RGNameofVM = $RGNameofVM[4] 
    $IP = (Get-AzureRmNetworkInterface -Name $VMName -ResourceGroupName $RGNameofVM ).IpConfigurations.PrivateIpAddress
    
  • 0

    好吧,正如我们对DevTest实验室所知,对于PowerShell没有直接的方法 . 您可以使用以下powershell脚本通过传递虚拟机名称来获取VM的专用IP地址 . 我们可以通过传递ResourceId来使用 Find-AzureRmResourceGet-AzureRmResource

    $vmNicdetails = Find-AzureRmResource -ResourceNameContains mytestVM | Where {$_.ResourceType -eq 'Microsoft.Network/networkInterfaces'}
    $nicdetails = Get-AzureRmResource -ResourceId $vmNicdetails.ResourceId
    $ipconfig = Get-AzureRmResource -ResourceId
    $nicdetails.Properties.ipConfigurations.id -ApiVersion '2017-03-01'
    $ipconfig.Properties.privateIPAddress
    

相关问题