[Azure]使用Powershell为ASM虚拟机创建快照

60 篇文章 0 订阅
59 篇文章 0 订阅

本脚本对ASM虚拟机进行快照的创建,原理是针对给定的虚拟机的系统盘和全部数据盘进行快照。在调用脚本之前,需要用Add-AzureAccount -Environment AzureChinaCloud登陆一下或者导入订阅。


脚本如下:

param(
    #The name of the subscription to take all the operations within. 
    [Parameter(Mandatory = $true)] 
    [string]$SubscriptionName, 

    # The name of the storage account to enumerate.
    [Parameter(Mandatory = $true)]
    [string]$ServiceName,
 
    # The name of the storage container to enumerate.
    [Parameter(Mandatory = $true)]
    [string]$VMName
)

Select-AzureSubscription -SubscriptionName $SubscriptionName;

#Get VM
$VM = Get-AzureVM -ServiceName $ServiceName -Name $VMName;

#Get Disks
$OSDisk = $VM.VM.OSVirtualHardDisk;
$DataDisks = $VM.VM.DataVirtualHardDisks;

Function CreateSnapshot($Disk)
{
    $AbsoluteUri = $Disk.MediaLink.AbsoluteUri;
    $StorageAccountName = $AbsoluteUri.Substring(8, $AbsoluteUri.IndexOf(".blob.core.chinacloudapi.cn") - 8);
    $ContainerPathIndex = $AbsoluteUri.IndexOf("blob.core.chinacloudapi.cn/") + 27;
    $ContainerName = $AbsoluteUri.SubString($ContainerPathIndex, $AbsoluteUri.IndexOf('/', $ContainerPathIndex) - $ContainerPathIndex);
    $BlobName = $AbsoluteUri.SubString($AbsoluteUri.LastIndexOf('/') + 1);

    $storageAccessKey = (Get-AzureStorageKey -StorageAccountName $StorageAccountName).Primary;
    $storageContext = New-AzureStorageContext -StorageAccountName $StorageAccountName -StorageAccountKey $storageAccessKey -Endpoint "core.chinacloudapi.cn";
    $blobClient = $storageContext.Context.StorageAccount.CreateCloudBlobClient();
    $blobContainer = $blobClient.GetContainerReference($ContainerName);
    $blob = $blobContainer.GetBlockBlobReference($blobName);

    $Blob.CreateSnapshot() | Out-Null;
}

Write-Host "Creating OS Disk Snapshot...";
CreateSnapshot $OSDisk;
Write-Host "Finished Create OS Disk Snapshot.";

Write-Host "Creating Data Disk Snapshot(s)...";
Foreach($DataDisk in $DataDisks)
{
    Write-Host "Creating snapshot for " $DataDisk.DiskName;
    CreateSnapshot $DataDisk;
    Write-Host "Finished create snapshot for " $DataDisk.DiskName;
}
Write-Host "Finished Create Data Disk Snapshot(s).";


执行示例:

[ASM]CreateSnapshotsForSingleVM.ps1 -SubscriptionName <Subscription Name> -ServiceName <CloudService Name> -VMName <VM Name>
Creating OS Disk Snapshot...
Finished Create OS Disk Snapshot.
Creating Data Disk Snapshot(s)...
Creating snapshot for  DanServerTest-DanCentOS65-0-201606160509070764
Finished create snapshot for  DanServerTest-DanCentOS65-0-201606160509070764
Creating snapshot for  DanServerTest-DanCentOS65-1-201606160510300054
Finished create snapshot for  DanServerTest-DanCentOS65-1-201606160510300054
Creating snapshot for  DanServerTest-DanCentOS65-2-201606160511220008
Finished create snapshot for  DanServerTest-DanCentOS65-2-201606160511220008
Creating snapshot for  DanServerTest-DanCentOS65-3-201606160525080673
Finished create snapshot for  DanServerTest-DanCentOS65-3-201606160525080673
Finished Create Data Disk Snapshot(s).


  • 49
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值