2017-03-02 65 views
0

剛纔我從Azure DevTest Lab開始。我使用json模板在實驗室中創建了一個虛擬機。我想使用PowerShell的虛擬機的公共IP,或者可能是我想要返回相同的使用模板,如果我可以。使用Powershell在Azure開發人員測試實驗室獲取私有IP虛擬機

的挑戰,這裏是每虛擬機是在除實驗室存在另一個新的資源組創建DTL概念。我絕對可以在門戶網站上看到實驗室VM資源組的名稱,但我無法弄清楚如何使用PowerShell來完成此操作。我正在進行自動化,所以我需要通過PowerShell來實現。

請參考圖片。實驗室似乎與實驗室存在的資源組位於綠色框中。但是,從技術上講,實驗室虛擬機駐留在屏幕截圖中以淺黃色顯示的動態創建的資源組(RG名稱模式= labname +虛擬機名稱+某些隨機數字)。

enter image description here

+0

那麼最新的問題是什麼? – 4c74356b41

+0

的問題是如何讓虛擬機的IP不知道使用PowerShell – Atf

+0

以及資​​源組的名稱,你知道devtestlabs名 – 4c74356b41

回答

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

好,一般一個更優雅的解決方案,oposed到暴力破解是使用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

那麼,正如我們所知道的DevTest實驗室沒有直接的PowerShell的方式。您可以使用下面的powershell腳本通過傳遞虛擬機名稱來獲取虛擬機的專用IP地址。我們可以使用Find-AzureRmResourceGet-AzureRmResource通過ResourceId:

$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