Create a snapshot from a VHD to create multiple identical managed disks in small amount of time with PowerShell (Windows)
This script creates a snapshot from a VHD file in a storage account in same or different subscription. Use this script to import a specialized (not generalized/sysprepped) VHD to a snapshot and then use the snapshot to create multiple identical managed disks in small amount of time. Also, use it to import a data VHD to a snapshot and then use the snapshot to create multiple managed disks in small amount of time.
#Provide the subscription Id where snapshot will be created $subscriptionId = 'yourSubscriptionId' #Provide the name of your resource group where snapshot will be created. $resourceGroupName ='yourResourceGroupName' #Provide the name of the snapshot $snapshotName = 'yourSnapshotName' #Provide the storage type for snapshot. PremiumLRS or StandardLRS. $storageType = 'StandardLRS' #Provide the Azure region (e.g. westus) where snapshot will be located. #This location should be same as the storage account location where VHD file is stored #Get all the Azure location using command below: #Get-AzLocation $location = 'westus' #Provide the URI of the VHD file (page blob) in a storage account. Please not that this is NOT the SAS URI of the storage container where VHD file is stored. #e.g. https://contosostorageaccount1.blob.core.windows.net/vhds/contosovhd123.vhd #Note: VHD file can be deleted as soon as Managed Disk is created. $sourceVHDURI = 'https://yourStorageAccountName.blob.core.windows.net/vhds/yourVHDName.vhd' #Provide the resource Id of the storage account where VHD file is stored. #e.g. /subscriptions/6582b1g7-e212-446b-b509-314e17e1efb0/resourceGroups/MDDemo/providers/Microsoft.Storage/storageAccounts/contosostorageaccount1 #This is an optional parameter if you are creating snapshot in the same subscription $storageAccountId = '/subscriptions/yourSubscriptionId/resourceGroups/yourResourceGroupName/providers/Microsoft.Storage/storageAccounts/yourStorageAccountName' #Set the context to the subscription Id where Managed Disk will be created Select-AzSubscription -SubscriptionId $SubscriptionId $snapshotConfig = New-AzSnapshotConfig -AccountType $storageType -Location $location -CreateOption Import -StorageAccountId $storageAccountId -SourceUri $sourceVHDURI New-AzSnapshot -Snapshot $snapshotConfig -ResourceGroupName $resourceGroupName -SnapshotName $snapshotName
For more information on the Azure PowerShell module, see Azure PowerShell documentation.
Additional virtual machine PowerShell script samples can be found in the Azure Windows VM documentation.