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.
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
|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
|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
|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|
|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|
- See the basic steps for creating a virtual machine in Create a Windows VM using Resource Manager and PowerShell.