Common PowerShell commands for creating and managing Azure Virtual Machines

This article covers some of the Azure PowerShell commands that you can use to create and manage virtual machines in your Azure subscription. For more detailed help with specific command-line switches and options, you can use the Get-Help command.

Note

This article has been updated to use the new Azure PowerShell Az module. You can still use the AzureRM module, which will continue to receive bug fixes until at least December 2020. To learn more about the new Az module and AzureRM compatibility, see Introducing the new Azure PowerShell Az module. For Az module installation instructions, see Install Azure PowerShell.

These variables might be useful for you if running more than one of the commands in this article:

  • $location - The location of the virtual machine. You can use Get-AzLocation to find a geographical region that works for you.
  • $myResourceGroup - The name of the resource group that contains the virtual machine.
  • $myVM - The name of the virtual machine.

Create a VM - simplified

Task Command
Create a simple VM New-AzVM -Name $myVM

New-AzVM has a set of simplified parameters, where all that is required is a single name. The value for -Name will be used as the name for all of the resources required for creating a new VM. You can specify more, but this is all that is required.
Create a VM from a custom image New-AzVm -ResourceGroupName $myResourceGroup -Name $myVM ImageName "myImage" -Location $location

You need to have already created your own managed image. You can use an image to make multiple, identical VMs.

Create a VM configuration

Task Command
Create a VM configuration $vm = New-AzVMConfig -VMName $myVM -VMSize "Standard_D1_v1"

The VM configuration is used to define or update settings for the VM. The configuration is initialized with the name of the VM and its size.
Add configuration settings $vm = Set-AzVMOperatingSystem -VM $vm -Windows -ComputerName $myVM -Credential $cred -ProvisionVMAgent -EnableAutoUpdate

Operating system settings including credentials are added to the configuration object that you previously created using New-AzVMConfig.
Add a network interface $vm = Add-AzVMNetworkInterface -VM $vm -Id $nic.Id

A VM must have a network interface to communicate in a virtual network. You can also use Get-AzNetworkInterface to retrieve an existing network interface object.
Specify a platform image $vm = Set-AzVMSourceImage -VM $vm -PublisherName "publisher_name" -Offer "publisher_offer" -Skus "product_sku" -Version "latest"

Image information is added to the configuration object that you previously created using New-AzVMConfig. The object returned from this command is only used when you set the OS disk to use a platform image.
Create a VM New-AzVM -ResourceGroupName $myResourceGroup -Location $location -VM $vm

All resources are created in a resource group. Before you run this command, run New-AzVMConfig, Set-AzVMOperatingSystem, Set-AzVMSourceImage, Add-AzVMNetworkInterface, and Set-AzVMOSDisk.
Update a VM Update-AzVM -ResourceGroupName $myResourceGroup -VM $vm

Get the current VM configuration using Get-AzVM, change configuration settings on the VM object, and then run this command.

Get information about VMs

Task Command
List VMs in a subscription Get-AzVM
List VMs in a resource group Get-AzVM -ResourceGroupName $myResourceGroup

To get a list of resource groups in your subscription, use Get-AzResourceGroup.
Get information about a VM Get-AzVM -ResourceGroupName $myResourceGroup -Name $myVM

Manage VMs

Task Command
Start a VM Start-AzVM -ResourceGroupName $myResourceGroup -Name $myVM
Stop a VM Stop-AzVM -ResourceGroupName $myResourceGroup -Name $myVM
Restart a running VM Restart-AzVM -ResourceGroupName $myResourceGroup -Name $myVM
Delete a VM Remove-AzVM -ResourceGroupName $myResourceGroup -Name $myVM

Next steps