Note
Access to this page requires authorization. You can try signing in or changing directories.
Access to this page requires authorization. You can try changing directories.
Before moving further, please make sure you have Azure PowerShell installed:
How to install and configure Azure PowerShell
For basic information about using Azure Powershell with Resource Manager (ARM), please have a look at:
Using Azure PowerShell with Azure Resource Manager
In this example, the following variables are being used:
Resource Group: ARMGROUP
Original VM Name: LinuxVM
Location: southcentralus
NIC Name: LinuxVM-NIC
Storage Account: ARMSTORAGE
VHD URI: https://ARMSTORAGE.blob.core.windows.net/vhds/linuxvm.vhd
You should be able to get a list of parameters from a given VM by using:
Get-AzureRmVm -ResourceGroupName $rgName -Name $vmName
It also assumes that you have logged in with the azure powershell using:
Add-AzureRmAccount
And that your subscription is set using:
Set-AzureRmContext -SubscriptionID <YourSubscriptionId>
Deleting a VM on ARM using PowerShell
Remove-AzureRmVm -Name "LinuxVM" -Force -ResourceGroupName "ARMGROUP"
Recreating the VM from the Original VHD:
Define Resource Group and Location:
$rgName="<Resource Group>"
$location="<Location>"
Create a new VM config:
$vmName="<VM Name>"
$vmSize="<VM Size>"
$vmc = New-AzureRmVmConfig -VMName $vmName -VMSize $vmSize
Add a network interface (in this example, we are reusing the existing NIC from the previous VM)
$nic = Get-AzureRmNetworkInterface -Name "<NIC Name>" -ResourceGroupName $rgName
Add-AzureRmVmNetworkInterface -VM $vmc -Id $nic.Id
Set the OS disk:
$vhdName="<VHD Name>"
$vhdURI="<VHD URI>"
Set-AzureRmVmOSDisk -VM $vmc -Name $vhdName -VhdURI $vhd_uri -Linux -CreateOption Attach
Create the VM
New-AzureRmVm -ResourceGroupName $rgName -Location $location -VM $vmc
Example with the parameters in this article:
$rgName="ARMGROUP"
$location="southcentralus"
$vmName="LinuxVM"
$vmSize="Standard_A1"
$vmc = New-AzureRmVmConfig -VMName $vmName -VMSize $vmSize
$nic = Get-AzureRmNetworkInterface -Name "linuxvm-nic" -ResourceGroupName $rgName
Add-AzureRmVmNetworkInterface -VM $vmc -Id $nic.Id
$vhdName="linuxvm.vhd"
$vhdURI="https://linuxstoragelrs.blob.core.windows.net/vhds/linuxvm.vhd"
Set-AzureRmVmOSDisk -VM $vmc -Name $vhdName -VhdUri $vhdURI -Linux -CreateOption Attach
New-AzureRmVm -ResourceGroupName $rgName -Location $location -VM $vmc
Comments
- Anonymous
May 19, 2017
Too many typos. Your code is not consistent in the use of variable names. Please check it.- Anonymous
May 19, 2017
Hi Ahmed,Could you let me know where you are having issues?We use this all the time and it's been very consistent.Thank you!-Marco
- Anonymous