Initial commit
This commit is contained in:
82
Function_TK_CopyAzureVHDToAzureBlob.ps1
Normal file
82
Function_TK_CopyAzureVHDToAzureBlob.ps1
Normal file
@@ -0,0 +1,82 @@
|
||||
Function TK_CopyVHDToBlob {
|
||||
<#
|
||||
.SYNOPSIS
|
||||
Copy / Download a managed Azure Disk to Azure Storage account
|
||||
.DESCRIPTION
|
||||
Copy / Download a managed Azure Disk to Azure Storage account
|
||||
.PARAMETER SubscriptionID
|
||||
Azure Subscription ID eg. 11111111-2222-3333-4444-555555555555
|
||||
.PARAMETER ResourceGroupName
|
||||
The name of the ResourceGroup where the disk is stored eg. my-resources
|
||||
.PARAMETER ManagedDiskName
|
||||
The Name of the managed disk eg. test01_OsDisk_1_729ca8fexxxxxx849c2a8d89d21119db
|
||||
.PARAMETER DestStorageAccName
|
||||
The Name of the destination storage account eg. mystorage
|
||||
.PARAMETER DestStorageAccKey
|
||||
The access key for that storage account eg.
|
||||
.PARAMETER StorageContainerName
|
||||
The Name of the destination container in that storage account eg. myimages
|
||||
.PARAMETER VHDFileName
|
||||
Name of the VHD file eg. myimage.vhd
|
||||
.EXAMPLE
|
||||
TK_CopyVHDToBlob -SubscriptionID xxxx -ResourceGroupName "my-resources"" -ManagedDiskName "test01_=OsDisk_1_xxx" -DestStorageAccName "mystorage" -DestStorageAccKey "abcxxxx==" -StorageContainerName "myimages" -VHDFileName "myimage.vhd"
|
||||
.NOTES
|
||||
Author : Thomas Krampe | t.krampe@loginconsultants.de
|
||||
Version : 1.0
|
||||
Creation date : 23.08.2019 | v0.1 | Initial script
|
||||
Last change : 23.08.2019 | v1.0 | Release
|
||||
|
||||
IMPORTANT NOTICE
|
||||
----------------
|
||||
THIS SCRIPT IS PROVIDED "AS IS" WITHOUT WARRANTIES OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING
|
||||
ANY WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE OR NON- INFRINGEMENT.
|
||||
LOGIN CONSULTANTS, SHALL NOT BE LIABLE FOR TECHNICAL OR EDITORIAL ERRORS OR OMISSIONS CONTAINED
|
||||
HEREIN, NOT FOR DIRECT, INCIDENTAL, CONSEQUENTIAL OR ANY OTHER DAMAGES RESULTING FROM FURNISHING,
|
||||
PERFORMANCE, OR USE OF THIS SCRIPT, EVEN IF LOGIN CONSULTANTS HAS BEEN ADVISED OF THE POSSIBILITY
|
||||
OF SUCH DAMAGES IN ADVANCE.
|
||||
#>
|
||||
|
||||
[CmdletBinding()]
|
||||
Param(
|
||||
[Parameter(Mandatory = $true, Position = 0)][String]$SubscriptionID,
|
||||
[Parameter(Mandatory = $true, Position = 1)][String]$ResourceGroupName,
|
||||
[Parameter(Mandatory = $true, Position = 2)][String]$ManagedDiskName,
|
||||
[Parameter(Mandatory = $true, Position = 3)][String]$DestStorageAccName,
|
||||
[Parameter(Mandatory = $true, Position = 4)][String]$DestStorageAccKey,
|
||||
[Parameter(Mandatory = $true, Position = 5)][String]$StorageContainerName,
|
||||
[Parameter(Mandatory = $true, Position = 6)][String]$VHDFileName
|
||||
)
|
||||
|
||||
begin {
|
||||
Connect-AzAccount
|
||||
}
|
||||
|
||||
process {
|
||||
Select-AzSubscription -SubscriptionId $SubscriptionID
|
||||
$sas = Grant-AzDiskAccess -ResourceGroupName $ResourceGroupName -DiskName $ManagedDiskName -DurationInSecond 3600 -Access Read
|
||||
|
||||
$destContext = New-AzStorageContext –StorageAccountName $DestStorageAccName -StorageAccountKey $DestStorageAccKey
|
||||
$blobcopy = Start-AzStorageBlobCopy -AbsoluteUri $sas.AccessSAS -DestContainer $StorageContainerName -DestContext $destContext -DestBlob $VHDFileName
|
||||
|
||||
while (($blobCopy | Get-AzStorageBlobCopyState).Status -eq "Pending") {
|
||||
Start-Sleep -s 30
|
||||
$blobCopy | Get-AzStorageBlobCopyState
|
||||
}
|
||||
}
|
||||
|
||||
end {
|
||||
|
||||
}
|
||||
} #EndFunction TK_CopyVHDToBlob
|
||||
|
||||
# Usage Example
|
||||
$HLSubscriptionID = "11111111-2222-3333-4444-555555555555"
|
||||
$HLResourceGroupName = "myresources"
|
||||
$HLManagedDiskName = "test01_OsDisk_1_xxxxxxxxxxxxxxxdb"
|
||||
$HLDestStorageAccName = "mystorage"
|
||||
$HLDestStorageAccKey = "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx=="
|
||||
$HLStorageContainerName = "myimages"
|
||||
$HLVHDFileName = "myimage.vhd"
|
||||
|
||||
# Function Call
|
||||
TK_CopyVHDToBlob -SubscriptionID $HLSubscriptionID -ResourceGroupName $HLResourceGroupName -ManagedDiskName $HLManagedDiskName -DestStorageAccName $HLDestStorageAccName -DestStorageAccKey $HLDestStorageAccKey -StorageContainerName $HLStorageContainerName -VHDFileName $HLVHDFileName
|
||||
Reference in New Issue
Block a user