Skip to content

Instantly share code, notes, and snippets.

@jpomfret
Created October 21, 2022 12:27
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save jpomfret/26179af3e955dc9f8e145322be33739c to your computer and use it in GitHub Desktop.
Save jpomfret/26179af3e955dc9f8e145322be33739c to your computer and use it in GitHub Desktop.
AzureVMSnappyShots
# some variab;es
$resourceGroupName = 'rgTest'
$location = 'uksouth'
$vmName = 'rg-sm'
$snapshotName = ('snappyshot-SomethingUseful')
## take a snapshot of the disk
$vm = Get-AzVM -ResourceGroupName $resourceGroupName -Name $vmName
$currentOsDisk = $vm.StorageProfile.OsDisk.Name
$snapshot = New-AzSnapshotConfig -SourceUri $vm.StorageProfile.OsDisk.ManagedDisk.Id -Location $location -CreateOption copy
New-AzSnapshot -Snapshot $snapshot -SnapshotName $snapshotName -ResourceGroupName $resourceGroupName
Get-AzSnapshot -ResourceGroupName $resourceGroupName | FT ResourceGroupName, Name, TimeCreated
#########################
# BREAK EVERYTHING HERE #
#########################
# create a new managed disk from the snapshot
$osDiskName = ('newOSdisk-{0}' -f (Get-Random))
$snapshotinfo = Get-AzSnapshot -ResourceGroupName $resourceGroupName -SnapshotName $snapshotName
$disk = New-AzDisk -DiskName $osDiskName (New-AzDiskConfig -Location $location -CreateOption Copy -SourceResourceId $snapshotinfo.Id) -ResourceGroupName $resourceGroupName
# power down vm and switcharoo on the disks
Stop-AzVM -ResourceGroupName $resourceGroupName -Name $vm.Name -Force
$disk = Get-AzDisk -ResourceGroupName $resourceGroupName -Name $osDiskName
Set-AzVMOSDisk -VM $vm -ManagedDiskId $disk.Id -Name $disk.Name
Update-AzVM -ResourceGroupName $resourceGroupName -VM $vm
Start-AzVM -Name $vm.Name -ResourceGroupName $resourceGroupName
# tidy up the old disks ?
Remove-AzDisk -ResourceGroupName $resourceGroupName -DiskName $currentOsDisk
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment