我有一个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。
该问题的解决方案是什么?在检查行是否存在之前,如何确保已创建表?
答案 0 :(得分:0)
在使用$Table.CreateIfNotExistsAsync()
创建表之后,您可以仅使用循环(如while)来确定表是否存在。
示例代码如下:
#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.