Не удалось найти перегрузку для ошибки «ExecuteBatch» в powershell для пакетной вставки - PullRequest
0 голосов
/ 28 февраля 2020

Я делаю пакетную вставку с powershell для Azure таблицы. используя последние модули Az, а не AzureRm.

$context = New-AzStorageContext $storageAccountName -StorageAccountKey $storageAccountKey
$table = (Get-AzStorageTable –Name myTable –Context $context)

foreach($item in $items){
    [Microsoft.WindowsAzure.Storage.Table.TableBatchOperation]$batchOperation = New-Object -TypeName Microsoft.WindowsAzure.Storage.Table.TableBatchOperation
    $entity = New-Object -TypeName Microsoft.WindowsAzure.Storage.Table.DynamicTableEntity -ArgumentList $partitionKey, $rowKey
    $entity.Properties.Add("ID", $id)
    $batchOperation.InsertOrReplace($entity)
}
if ($batchOperation.Count -ne 0) {
    $table.CloudTable.ExecuteBatch($batchOperation)
}

Но я получаю сообщение об ошибке:

Cannot find an overload for "ExecuteBatch" and the argument count: "1"

«ExecuteBatch» - этот метод доступен только в старом модуле AzureRm?

1 Ответ

1 голос
/ 28 февраля 2020

ExecuteBatch операция определенно доступна.

enter image description here

Я считаю, что вы получаете эту ошибку, потому что вы используете неправильное пространство имен. Вы должны использовать Microsoft.Azure.Cosmos.Table вместо Microsoft.WindowsAzure.Storage.Table.

Пожалуйста, попробуйте следующий код. Я попробовал, и это работает:

$storageAccountName = "account-name";
$storageAccountKey = "account-key=="

$context = New-AzStorageContext $storageAccountName -StorageAccountKey $storageAccountKey
$table = (Get-AzStorageTable –Name myTable –Context $context)

foreach($item in $items){
    [Microsoft.Azure.Cosmos.Table.TableBatchOperation]$batchOperation = New-Object -TypeName Microsoft.Azure.Cosmos.Table.TableBatchOperation
    $entity = New-Object -TypeName Microsoft.Azure.Cosmos.Table.DynamicTableEntity -ArgumentList $partitionKey, $rowKey
    $entity.Properties.Add("ID", $id)
    $batchOperation.InsertOrReplace($entity)
}
if ($batchOperation.Count -ne 0) {
    $table.CloudTable.ExecuteBatch($batchOperation)
}
...