«Не найдено» исключение из AzureRmStorageTableCoreHelper.psm1 при вызове Get-AzTableRow сразу после Get-AzTableTable - PullRequest
0 голосов
/ 04 мая 2019

У меня есть сценарий PowerShell, в котором я вызываю Get-AzTableTable, Get-AzTableRow и Add-AzTableRow один за другим.Иногда (но не всегда) я получаю следующую ошибку от Get-AzTableRow:

Exception calling "Execute" with "1" argument(s): "Not Found"
At C:\Program Files\WindowsPowerShell\Modules\AzTable\2.0.2\AzureRmStorageTableCoreHelper.psm1:239 char:10
+ ...      return ($Table.Execute([Microsoft.Azure.Cosmos.Table.TableOperat ...
+                 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    + CategoryInfo          : NotSpecified: (:) [], MethodInvocationException
    + FullyQualifiedErrorId : StorageException

Это происходит, только когда таблица еще не существует.Я думаю, что происходит то, что Get-AzTableTable создает его асинхронно (через $ Table.CreateIfNotExistsAsync ()), и я вызываю Get-AzTableRow до того, как таблица была создана.

Какое решение этой проблемы?Как я могу убедиться, что таблица была создана до того, как я проверил наличие строки?

1 Ответ

0 голосов
/ 06 мая 2019

Вы можете просто использовать цикл (например, while), чтобы определить, существует ли таблица, после создания таблицы, используя $Table.CreateIfNotExistsAsync().

Пример кода, подобный приведенному ниже:

#create the table using $Table.CreateIfNotExistsAsync()

#here check if the table create or not
# Since I cannot see all your code, note that if $Table does not have a method Exists(), you can try use $Table.CloudTable.Exists()
while(!($Table.Exists()))
{
Start-Sleep -Seconds 2; 
Write-Output "the table does not create, please wait."
}

#if the table exists, you can do other operation.
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...