PowerShellでAzure Blob StorageのSnapshotを取得する
Pocket

仕事でAzure Blob Storageをいじってるのだけど、ポータル画面からだとスナップショットの取得ができなそうなので、PowerShellから取ってみる事にした。

残念ながら、コンテナ単位でSnapshotを取得する事は出来ないようで、オブジェクト単位での取得をする必要があるようだ。

Sponsored Links

# Blob Storageに関する情報
# StorageAccountName: Blobアカウント名
# StorageAccountKey : Blobアクセスキー
# ContainerName : Blobコンテナ名
# BlobName : Blob名
$StorageAccountName = "Blobアカウント名"
$StorageAccountKey = "Blobアクセスキー=="
$ContainerName = "コンテナ名"
$Ctx = New-AzureStorageContext -StorageAccountName $StorageAccountName -StorageAccountKey $StorageAccountKey

# コンテナ情報を取得する
$BlobsContainer = Get-AzureStorageBlob -Context $Ctx -Container $ContainerName

# foreachでコンテナ内の必要なBlob(今回はvhd)に対しスナップショットを取得する
foreach($Blob in $BlobsContainer) {
    if((!$Blob.ICloudBlob.IsSnapshot) -and ($Blob.Name.EndsWith("vhd"))){
        # スナップショットの取得を行う
        $snap = $blob.ICloudBlob.CreateSnapshot()
        # 指定したBlobのスナップショットを確認する
        Get-AzureStorageBlob –Context $Ctx -Prefix $Blob.Name -Container $ContainerName  | Where-Object  { $_.ICloudBlob.IsSnapshot -and $_.Name -eq $Blob.Name }
    }
}

 

スナップショットの取得条件は環境に合わせて書き換えてもらえれば良いだろう。

 

Pocket

Written by blacknon

インフラ系のSE。一時期はプログラマ。 仮想化とオープンソースに興味あり。一日中寝てたい今日このごろ。 スペインとかで働きたいなぁ…(シエスタがあるので)

Leave a Comment

メールアドレスが公開されることはありません。