建立Azure Blob Snapshot的腳本

在前面的文章中介紹瞭如何建立Azure Blob Snapshot。那篇文章中建立的腳本思路是:遍歷全部Storage Account,找到全部vhd文件,進行Snapshot的建立。測試

但這種方式不夠嚴謹,有多是已經刪除了的VM,不須要再進行Snapshot的建立工做。spa

本文將採用獲取Subscription下全部VM,若是這臺虛擬機是運行狀態,就去獲得其OS Disk和Data Disk,對其進行建立Snapshot的工做。code

具體的腳本以下:blog

 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 }

測試時,能夠把ip

$blob.ICloudBlob.CreateSnapshot()

標註; 虛擬機

it

#write-host $blob.name

撤銷標註。io

若是正確,能夠打印全部OS Disk和Data Disk的文件名。class

相關文章
相關標籤/搜索