首页 > 其他 > 详细

创建Azure Blob Snapshot的脚本

时间:2016-01-24 23:48:14      阅读:154      评论:0      收藏:0      [点我收藏+]

在前面的文章中介绍了如何创建Azure Blob Snapshot。那篇文章中创建的脚本思路是:遍历所有Storage Account,找到所有vhd文件,进行Snapshot的创建。

但这种方式不够严谨,有可能是已经删除了的VM,不需要再进行Snapshot的创建工作。

本文将采用获取Subscription下所有VM,如果这台虚拟机是运行状态,就去得到其OS Disk和Data Disk,对其进行创建Snapshot的工作。

具体的脚本如下:

 1 $vms = Get-AzureVM
 2 foreach ($vm in $vms)
 3 {
 4     if($vm.Status -eq "ReadyRole")
 5     {
 6         $osblobname = ($vm.VM.OSVirtualHardDisk).MediaLink.ToString().Split("/")[-1]
 7         $osblobcontainer = ($vm.VM.OSVirtualHardDisk).MediaLink.ToString().Split("/")[-2]
 8         $osblobsa = ($vm.VM.OSVirtualHardDisk).MediaLink.ToString().Split("/")[-3].Split(".")[0]
 9 
10         $storagekey = (Get-AzureStorageKey -StorageAccountName $osblobsa).Primary
11         $ctr = New-AzureStorageContext -StorageAccountName $osblobsa -StorageAccountKey $storagekey -Environment AzureChinaCloud
12         
13         $blob = Get-AzureStorageBlob -Container $osblobcontainer -Context $ctr -Blob $osblobname
14         $blob.ICloudBlob.CreateSnapshot()
15         #write-host $blob.Name
16 
17         $count = $vm.VM.DataVirtualHardDisks.Count
18     
19         for($i=0;$i -lt $count;$i++)
20         {
21             $datablobname = ($vm.VM.DataVirtualHardDisks)[$i].MediaLink.ToString().Split("/")[-1]
22             $datablobcontainer = ($vm.VM.DataVirtualHardDisks)[$i].MediaLink.ToString().Split("/")[-2]
23             $datablobsa = ($vm.VM.DataVirtualHardDisks)[$i].MediaLink.ToString().Split("/")[-3].Split(".")[0]
24             $storagekey = (Get-AzureStorageKey -StorageAccountName $datablobsa).Primary
25             $ctr = New-AzureStorageContext -StorageAccountName $datablobsa -StorageAccountKey $storagekey -Environment AzureChinaCloud
26         
27             $blob = Get-AzureStorageBlob -Container $datablobcontainer -Context $ctr -Blob $datablobname
28             $blob.ICloudBlob.CreateSnapshot()
29             #write-host $blob.name
30         }
31     }
32 }

测试时,可以把

$blob.ICloudBlob.CreateSnapshot()

标注; 

#write-host $blob.name

撤销标注。

如果正确,可以打印所有OS Disk和Data Disk的文件名。


 

创建Azure Blob Snapshot的脚本

原文:http://www.cnblogs.com/hengwei/p/5156195.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!