Как возобновить копирование данных из BLOB-объекта с помощью сохраненного токена продолжения? - PullRequest
0 голосов
/ 03 марта 2020

Я пытался копировать данные из больших двоичных объектов несколькими пакетами, ссылаясь на приведенный ниже код в powershell.

    $MaxReturn = 10000
    $ContainerName = "abc"
    $Total = 0
    $Token=New-Object -TypeName 'Microsoft.WindowsAzure.Storage.Blob.BlobContinuationToken'
    $Token.NextMarker='last stored token value'
    do
     {
         $Blobs = Get-AzureStorageBlob -Container $ContainerName -MaxCount $MaxReturn  -ContinuationToken $Token
         $Total += $Blobs.Count
         if($Blobs.Length -le 0) { Break;}
         $Token = $Blobs[$blobs.Count -1].ContinuationToken;
     }
     While ($Token -ne $Null)
    Echo "Total $Total blobs in container $ContainerName"

Я сохраняю значение $ Token после каждого пакета в файле. Я хочу перезапустить копирование данных из токена продолжения, который был последний раз сохранен в файле.

Чтобы добиться этого, я вручную заменяю строку $ Token = null на $ Token = "последний сохраненный токен", и она выдает ошибку

"Невозможно связать параметр 'ContinuationToken'. Невозможно преобразовать значение типа" System.String "в тип" Microsoft. WindowsAzure .Storage.Blob.BlobContinuationToken ".

Как могу ли я передать значение последнего сохраненного токена параметру ContinuationToken в Get-AzureStorageBlob?

Я пытался использовать

$ Token = New-Object -TypeName Microsoft. WindowsAzure. Storage.Blob.BlobContinuationToken -NextMarker "Значение токена"

, но снова выдает ошибку

Не удается найти тип [Microsoft. WindowsAzure .Storage.Blob.BlobContinuationToken]: проверить что т Загружена сборка, содержащая этот тип.

Ниже приведена команда powershell для проверки того же самого.

PS C: \ Users \ F \ Documents> [Microsoft. WindowsAzure .Storage.Blob.BlobContinuationToken]

enter image description here

Ответы [ 2 ]

1 голос
/ 03 марта 2020
Import-Module -Name AzureRM
$MaxReturn = 10000
    $ContainerName = "abc"
    $Total = 0
    $Token=New-Object -TypeName 'Microsoft.WindowsAzure.Storage.Blob.BlobContinuationToken'
    $Token.NextMarker='last stored token value'
    do
     {
         $Blobs = Get-AzureStorageBlob -Container $ContainerName -MaxCount $MaxReturn  -ContinuationToken $Token
         $Total += $Blobs.Count
         if($Blobs.Length -le 0) { Break;}
         $Token = $Blobs[$blobs.Count -1].ContinuationToken;
     }
     While ($Token -ne $Null)
    Echo "Total $Total blobs in container $ContainerName"

Мне нужно было сериализовать токен продолжения и импортировать модуль AzureRM, чтобы начать процесс копирования с последнего значения токена продолжения. Спасибо за помощь.

0 голосов
/ 03 марта 2020

Этот параметр используется для пакетов, как я могу найти в документации. Таким образом, вы не можете преобразовать его из любого типа в [Microsoft.WindowsAzure.Storage.Blob.BlobContinuationToken]. Может быть, вы найдете некоторую справку по ссылке ниже, но я обнаружил, что у объекта есть методы для записи и чтения из файла xml, так что можно преобразовать сериализуемый токен продолжения в его XML представление, а затем прочитать его. link1

...