Я хочу скопировать файлы из контейнера хранения больших двоичных объектов Azure в общую папку Azure (в той же учетной записи хранения Azure).
При использовании Start-AzureStorageFileCopy или New-AzureStorageDirectory I получить сообщение об ошибке в параметрах контекста:
Start-AzureStorageFileCopy: невозможно связать параметр 'Context'. Не удалось преобразовать значение типа «Microsoft. WindowsAzure .Commands.Storage.AzureStorageContext» типа «Microsoft. WindowsAzure .Commands.Storage.AzureStorageContext» в тип «Microsoft. Azure .Commands.Common». .Authentication.Abstractions.IStorageContext ".
$StorageAccountName = "myStorageAccount"
$StorageAccountKey = "FAKEbkasdw504jfja0jgldheeeffl03659d0ch259fv=="
$ContainerName = "myContainerName"
$ShareName = "myShareName"
Write-Output "Start moving folder content $($ContainerName) from storageaccount $($StorageAccountName) to file share $($ShareName)"
# Get 'context' of the source container
$StorageContext = New-AzStorageContext -StorageAccountName $StorageAccountName `
-StorageAccountKey $StorageAccountKey
# Loop through all blobs
$blobs = Get-AzStorageBlob -Container $ContainerName -Context $StorageContext
foreach ($blob in $blobs)
{
# Switch slashes because fileshare expects \ instead /
$FilePath = $blob.name -replace '/','\'
# Get folderpath to create new folders
$FolderPath = Split-Path -Path $FilePath
# If folder was found (not the case for files in the rooth) create it on the share
# Todo: check if it exists
if ($FolderPath.Length -gt 0)
{
# Create folder
Write-Output "Create folder $($FolderPath) in fileshare"
New-AzureStorageDirectory -ShareName $ShareName `
-Path $FolderPath `
-Context $StorageContext.Context `
-ErrorAction SilentlyContinue #Todo check if folder already exits
}
# Copy file from blob storage container to fileshare
Write-Output "Copy file $($blob.name) to fileshare"
Start-AzureStorageFileCopy -SrcContainerName $ContainerName `
-SrcBlobName $blob.name `
-DestShareName $ShareName `
-DestFilePath $FilePath `
-Context $StorageContext.Context `
-DestContext $StorageContext.Context
# Delete file from blob storage container
Write-Output "Remove blob $($blob.name) from blob container"
Remove-AzStorageBlob -Context $StorageContext -Blob $blob.name -Container $ContainerName
}
Я попытался добавить .Context после параметров контекста, и он показывает IStorageContext вместо AzureStorageContext, но получил ту же ошибку
И странно то, что 3 недели go работали без ошибок, и теперь я получил эту ошибку. Не уверен, что изменилось за это время