Create a VM snapshot on demand in Azure using powershell

Below is a simple powershell script to create a snapshot of a VM in Azure for both the OS disk and any additional disks. Simply update the Get VM section with your parameters. 

 

# Get VM
$VmName = "bvm-name"
$ResourceGroupName = "My-RG"
$vm = get-azvm -Name $VmName -ResourceGroupName $ResourceGroupName
$location = "centralus"
$ostype = "Windows"

#VM Snapshot

Write-Host "VM $($vm.name) OS Disk Snapshot Begin" -BackgroundColor Cyan -ForegroundColor White
$snapshotdisk = $vm.StorageProfile


$OSDiskSnapshotConfig = New-AzSnapshotConfig -SourceUri $snapshotdisk.OsDisk.ManagedDisk.id -CreateOption Copy -Location $location -OsType $ostype
$snapshotNameOS = "$($snapshotdisk.OsDisk.Name)_snapshot_$(Get-Date -Format ddMMyyHHmmss)"

# OS Disk Snapshot

try {
New-AzSnapshot -ResourceGroupName $ResourceGroupName -SnapshotName $snapshotNameOS -Snapshot $OSDiskSnapshotConfig -ErrorAction Stop
} catch {
$_
}

Write-Host "VM $($vm.name) OS Disk Snapshot End" -BackgroundColor Green -ForegroundColor White

# Data Disk Snapshots

Write-Host "VM $($vm.name) Data Disk Snapshots Begin" -BackgroundColor Cyan -ForegroundColor White

$dataDisks = ($snapshotdisk.DataDisks).name
#$datadiskid = ($snapshotdisk.DataDisks).id

foreach ($datadisk in $datadisks) {

$dataDisk = Get-AzDisk -ResourceGroupName $ResourceGroupName -DiskName $datadisk

Write-Host "VM $($vm.name) Data Disk $($datadisk.Name) Snapshot Begin" -BackgroundColor Cyan -ForegroundColor White

$DataDiskSnapshotConfig = New-AzSnapshotConfig -SourceUri $dataDisk.Id -CreateOption Copy -Location $location
$snapshotNameData = "$($vm.name)_$($datadisk.name)_snapshot_$(Get-Date -Format ddMMyyHHmmss)"

New-AzSnapshot -ResourceGroupName $ResourceGroupName -SnapshotName $snapshotNameData -Snapshot $DataDiskSnapshotConfig -ErrorAction Stop

Write-Host "VM $($vm.name) data Disk $($datadisk.Name) Snapshot End" -BackgroundColor Green -ForegroundColor White
}

Write-Host "VM $($vm.name) Data Disk Snapshots End" -BackgroundColor Green -ForegroundColor White

Add comment