Ошибка при доступе к данным из таблицы 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