Ошибка при доступе к данным из таблицы Azure с помощью сценария Get-AzTable Powershell

Я получаю приведенную ниже ошибку при попытке извлечь данные из хранилища таблиц Azure с помощью Get-AzTableRow -table

Get-AzTableRow -table $table -customFilter $filter1

Сообщение об ошибке:

Method invocation failed because [Microsoft.WindowsAzure.Commands.Common.Storage.ResourceModel.AzureStorageTable] does not contain a method named 'ExecuteQuerySegmentedAsync'.

Модули:

Install-PackageProvider -Name NuGet -Force -Scope CurrentUser
Install-Module -Name Az.Storage -MinimumVersion 1.1.0 -Force -Scope CurrentUser
Install-Module -Name AzTable -Force -Scope CurrentUser
Install-Module -Name Az.Resources -MinimumVersion 1.2.0 -Force -Scope CurrentUser

Я попробовал много способов, удалив все модули, затем импортировал модуль Az один и сделал один за другим

[string]$filter1 = [Microsoft.Azure.Cosmos.Table.TableQuery]::GenerateFilterCondition("PartitionKey",[Microsoft.Azure.Cosmos.Table.QueryComparisons]::Equal,$partitionKeyColumnValue)


$setting = Get-AzTableRow -table $table -customFilter $filter1

2 ответа

Командлет Get-AzTableRow параметр -table должен принимать тип CloudTable, но выходные данные командлета Get-AzStorageTable имеют тип AzureStorageTable, поэтому они не совпадают.

Если вам интересно, вы можете проверить, что это тип таблицы CosmosDB:

      $cloudTable | gm


   TypeName: Microsoft.Azure.Cosmos.Table.CloudTable

Name                       MemberType Definition                                                                                                                                         
----                       ---------- ----------                                                                                                                                         
Create                     Method     void Create(System.Nullable[Microsoft.Azure.Cosmos.IndexingMode] indexingMode, System.Nullable[int] throughput, System.Nullable[int] defaultTime...
CreateAsync                Method     System.Threading.Tasks.Task CreateAsync(), System.Threading.Tasks.Task CreateAsync(System.Threading.CancellationToken cancellationToken), System...
CreateIfNotExists          Method     bool CreateIfNotExists(Microsoft.Azure.Cosmos.IndexingMode indexingMode, System.Nullable[int] throughput, System.Nullable[int] defaultTimeToLive...
CreateIfNotExistsAsync     Method     System.Threading.Tasks.Task[bool] CreateIfNotExistsAsync(), System.Threading.Tasks.Task[bool] CreateIfNotExistsAsync(System.Threading.Cancellati...
CreateQuery                Method     Microsoft.Azure.Cosmos.Table.TableQuery[TElement] CreateQuery[TElement]()                                                                          
Delete                     Method     void Delete(Microsoft.Azure.Cosmos.Table.TableRequestOptions requestOptions, Microsoft.Azure.Cosmos.Table.OperationContext operationContext)       
DeleteAsync                Method     System.Threading.Tasks.Task DeleteAsync(), System.Threading.Tasks.Task DeleteAsync(System.Threading.CancellationToken cancellationToken), System...
DeleteIfExists             Method     bool DeleteIfExists(Microsoft.Azure.Cosmos.Table.TableRequestOptions requestOptions, Microsoft.Azure.Cosmos.Table.OperationContext operationCont...
DeleteIfExistsAsync        Method     System.Threading.Tasks.Task[bool] DeleteIfExistsAsync(), System.Threading.Tasks.Task[bool] DeleteIfExistsAsync(System.Threading.CancellationToke...
Equals                     Method     bool Equals(System.Object obj)                                                                                                                     
Execute                    Method     Microsoft.Azure.Cosmos.Table.TableResult Execute(Microsoft.Azure.Cosmos.Table.TableOperation operation, Microsoft.Azure.Cosmos.Table.TableReques...
ExecuteAsync               Method     System.Threading.Tasks.Task[Microsoft.Azure.Cosmos.Table.TableResult] ExecuteAsync(Microsoft.Azure.Cosmos.Table.TableOperation operation), Syste...
ExecuteBatch               Method     Microsoft.Azure.Cosmos.Table.TableBatchResult ExecuteBatch(Microsoft.Azure.Cosmos.Table.TableBatchOperation batch, Microsoft.Azure.Cosmos.Table....
ExecuteBatchAsync          Method     System.Threading.Tasks.Task[Microsoft.Azure.Cosmos.Table.TableBatchResult] ExecuteBatchAsync(Microsoft.Azure.Cosmos.Table.TableBatchOperation ba...
ExecuteQuery               Method     System.Collections.Generic.IEnumerable[Microsoft.Azure.Cosmos.Table.DynamicTableEntity] ExecuteQuery(Microsoft.Azure.Cosmos.Table.TableQuery que...
ExecuteQuerySegmented      Method     Microsoft.Azure.Cosmos.Table.TableQuerySegment[Microsoft.Azure.Cosmos.Table.DynamicTableEntity] ExecuteQuerySegmented(Microsoft.Azure.Cosmos.Tab...
ExecuteQuerySegmentedAsync Method     System.Threading.Tasks.Task[Microsoft.Azure.Cosmos.Table.TableQuerySegment[Microsoft.Azure.Cosmos.Table.DynamicTableEntity]] ExecuteQuerySegment...
Exists                     Method     bool Exists(Microsoft.Azure.Cosmos.Table.TableRequestOptions requestOptions, Microsoft.Azure.Cosmos.Table.OperationContext operationContext)       
ExistsAsync                Method     System.Threading.Tasks.Task[bool] ExistsAsync(), System.Threading.Tasks.Task[bool] ExistsAsync(System.Threading.CancellationToken cancellationTo...
GetHashCode                Method     int GetHashCode()                                                                                                                                  
GetPermissions             Method     Microsoft.Azure.Cosmos.Table.TablePermissions GetPermissions(Microsoft.Azure.Cosmos.Table.TableRequestOptions requestOptions, Microsoft.Azure.Co...
GetPermissionsAsync        Method     System.Threading.Tasks.Task[Microsoft.Azure.Cosmos.Table.TablePermissions] GetPermissionsAsync(), System.Threading.Tasks.Task[Microsoft.Azure.Co...
GetSharedAccessSignature   Method     string GetSharedAccessSignature(Microsoft.Azure.Cosmos.Table.SharedAccessTablePolicy policy), string GetSharedAccessSignature(Microsoft.Azure.Co...
GetType                    Method     type GetType()                                                                                                                                     
SetPermissions             Method     void SetPermissions(Microsoft.Azure.Cosmos.Table.TablePermissions permissions, Microsoft.Azure.Cosmos.Table.TableRequestOptions requestOptions, ...
SetPermissionsAsync        Method     System.Threading.Tasks.Task SetPermissionsAsync(Microsoft.Azure.Cosmos.Table.TablePermissions permissions), System.Threading.Tasks.Task SetPermi...
ToString                   Method     string ToString()                                                                                                                                  
Name                       Property   string Name {get;}                                                                                                                                 
ServiceClient              Property   Microsoft.Azure.Cosmos.Table.CloudTableClient ServiceClient {get;}                                                                                 
StorageUri                 Property   Microsoft.Azure.Cosmos.Table.StorageUri StorageUri {get;}                                                                                          
Uri                        Property   uri Uri {get;}         

Итак, сначала вам нужно получить ссылку на этот тип объекта с помощью:

      $cloudTable = (Get-AzStorageTable –Name $tableName –Context $ctx).CloudTable

а затем используйте его в команде:

      Get-AzTableRow -Table $cloudTable

См. Официальную документацию:https://docs.microsoft.com/en-us/azure/storage/tables/table-storage-how-to-use-powershell#reference-cloudtable-property-of-a-specific -стол

Попробуйте использовать ядро ​​PowerShell. Это может быстро решить вашу проблему. Если это так, то это ваша версия PowerShell.

https://docs.microsoft.com/en-us/powershell/azure/install-az-ps?view=azps-2.1.0

Другие вопросы по тегам