首页 > 其他分享 >批量创建VM快照脚本

批量创建VM快照脚本

时间:2023-03-05 16:32:03浏览次数:40  
标签:快照 Name 批量 VM Snapshot Group Disk Data

来分享一个批量给所有虚机创建快照的脚本,这个虽然不难,不过还是比较实用的,脚本的效果就是给某个资源组下的所有虚机,都创建一个快照出来,包括虚机的OS盘以及数据盘都会打一个快照,这在做某些变更时还是比较方便的,不用再一个个打快照了

可以结合Azure Automation来一起使用,会更简单高效

具体脚本的内容如下

# take snapshots for all vms in the resource group
# https://learn.microsoft.com/en-us/azure/virtual-machines/snapshot-copy-managed-disk?tabs=powershell

param(
[string]$VM_Resource_Group_Name,
[string]$Target_Resource_Group_Name
)

function Take-Snapshot {
param (
$Snapshot_Config,
$Snapshot_Name,
$ResourceGroupName
)

try {
$Error.clear()
Write-Output "Creating snapshot $Snapshot_Name ... "
New-AzSnapshot -Snapshot $Snapshot_Config -SnapshotName $Snapshot_Name -ResourceGroupName $ResourceGroupName -ErrorAction Stop | out-null

}
catch {
Write-Output $Error[0].exception.message
}

}

$AzureContext = (Connect-AzAccount -Identity -Environment AzureChinaCloud).context
# set and store context
$AzureContext = Set-AzContext -SubscriptionName $AzureContext.Subscription -DefaultProfile $AzureContext
Select-AzSubscription -SubscriptionId "xxxxxxx";



$VMs = Get-AzVM -ResourceGroupName $VM_Resource_Group_Name -ErrorAction Stop
foreach ($vm in $VMs) {

# OS Disk
$OSDisk = $vm.StorageProfile.OsDisk
$OSDisk_ID = $vm.StorageProfile.OsDisk.ManagedDisk.id
$Snapshot_Config_OS = New-AzSnapshotConfig -SourceUri $OSDisk_ID -CreateOption Copy -Location $VM.Location -AccountType Standard_LRS
$Snapshot_Name_OS = $OSDisk.Name + "_snapshot_" + (Get-Date -Format "yyyy-MM-dd-HH-mm-ss")

$Target_Resource_Group = Get-AzResourceGroup -Name $Target_Resource_Group_Name -ErrorAction SilentlyContinue
if ($null -eq $Target_Resource_Group) {
New-AzResourceGroup -Name $Target_Resource_Group_Name -Location $VM.Location | out-null
}
Take-Snapshot -Snapshot_Config $Snapshot_Config_OS -Snapshot_Name $Snapshot_Name_OS -ResourceGroupName $Target_Resource_Group_Name

# Data disk
$Data_Disks = $vm.StorageProfile.DataDisks
if ($Data_Disks.count -ne 0) {
foreach ($Data_Disk in $Data_Disks) {

$Data_Disk_ID = $Data_Disk.ManagedDisk.id
$Snapshot_Config_Data_Disk = New-AzSnapshotConfig -SourceUri $Data_Disk_ID -CreateOption Copy -Location $VM.Location -AccountType Standard_LRS
$Snapshot_Name_Data_Disk = $Data_Disk.Name + "_snapshot_" + (Get-Date -Format "yyyy-MM-dd-HH-mm-ss")
Take-Snapshot -Snapshot_Config $Snapshot_Config_Data_Disk -Snapshot_Name $Snapshot_Name_Data_Disk -ResourceGroupName $Target_Resource_Group_Name
}
}
else {

Write-Output "No data disk found for VM $($VM.Name)"

}

}


使用时也很简单,以Azure Automation为例,创建好runbook之后,直接start,然后输入两个参数

批量创建VM快照脚本_Data


  • VM_RESOURCE_GROUP_NAME:要打快照的VM所在的resource group
  • TARGET_RESOURCE_GROUP_NAME:将快照创建在哪个resource group

可以看到脚本正在运行中,会输出一些log

批量创建VM快照脚本_Data_02

等待一段时间之后就能看到快照出来了

批量创建VM快照脚本_Data_03

标签:快照,Name,批量,VM,Snapshot,Group,Disk,Data
From: https://blog.51cto.com/mxyit/6101460

相关文章

  • 异步请求、批量处理、持续写入
    importgrequestsimportpandasaspdimporttimeall_start=time.time()sentence_list=[]#存储相似句子对df=pd.read_csv("new_clean.csv")all_sentence_......
  • centos7在线扩容根分区LVM
    背景:现已有lvm根分区,不能满足业务需求,在业务不下线的情况下对/分区扩容思路:创建新分区=>创建物理卷=>加入卷组=>扩容1、找到要扩容的分区2、找到新添加的磁盘......
  • 批量插入防止重复方案整理
    批量插入防止重复方案除了在程序中处理的方案,本次共有4种方案:1.insertignoreintoinsertignoreintouser(id,name)values('1','Tom');当插入数据时,如出......
  • JVM 类加载器、双亲委派原理
    类加载器ClassLoader作用:负责装入类。一个java程序运行,至少需要三个类加载器实例,负责加载不同类。BootstrapClassLoader是JVM内核内嵌加载器,主要负载加载JAVA_HOME/lib......
  • php curl 批量请求
    实例:<?php$ch=array();$res=array();$conn=array();$urls=array('baidu'=>"http://www.baidu.com/",'cheyun'=>"http://auto.jrj.com.cn/",'w3c'=......
  • mysqli 批量执行多条语句
    可以一次性的执行多个操作或取回多个结果集。实例:<?php$mysqli=newmysqli("localhost","root","111111","test");/*checkconnection*/if(mysqli_connect_errno())......
  • 虚拟机(设置快照&虚拟网卡不显示)
    1:设置快照1.1:快照管理1.2:设置快照1.3:创建快照完成2:虚拟网卡不显示希望效果:拥有VMnet1和VMnet82个虚拟网卡步骤2:以管理员运行VMware......
  • 32 openEuler使用LVM管理硬盘-管理卷组
    32openEuler使用LVM管理硬盘-管理卷组32.1创建卷组可在root权限下通过vgcreate命令创建卷组。vgcreate[option]vgnamepvname...其中:option:命令参数选项。常用......
  • 批量导入VCF文件
    Outlook系列软件在导入vCard(*.vcf)格式的联系人时一次只能导入成功一个,但我们可以通过VBA脚本让这个任务自动化.操作步骤如下:1,把所有vCards文件放在一个文件夹内。例如C:\V......
  • Excel批量插入图片(Excel函数集团)
    批量插入图片,归函数集团管了?对,你没看错,就是函数集团的活!因为Microsoft365出了一个新函数:IMAGE!所以,以前折腾的那种一堆合并以后再贴进txt文本文件再贴回来的,没用了?是与......