使用Azure存储表

时间:2018-01-15 09:45:10

标签: powershell azure

当我们尝试在azure存储表中插入实体时,会出现以下错误:

脚本

$entity = New-Object "Microsoft.WindowsAzure.Storage.Table.DynamicTableEntity,$assemblySN" -ArgumentList $PartitionKey, $RowKey
$result = $table.CloudTable.Execute([Microsoft.WindowsAzure.Storage.Table.TableOperation]::InsertOrMerge($entity))

错误

  

无法转换参数“operation”,其值为:“Microsoft.WindowsAzure.Storage.Table.TableOperation”,表示“执行”   键入“Microsoft.WindowsAzure.Storage.Table.TableOperation”:“无法转换   “Microsoft.WindowsAzure.Storage.Table.TableOperation”类型的值   “Microsoft.WindowsAzure.Storage.Table.TableOperation”键入“Microsoft.WindowsAzure.Storage.Table.TableOperation”。“

分析

根据Azure Powershell版本5.1.1的发布,它已升级Azure存储客户端库8.6.0.0(Microsoft.WindowsAzure.Storage.dll) 但它也保留旧版本(v8.1.1.0)。

因此,有两个具有相同名称但不同版本的库。较低版本(v8.1.1.0) 它出现在C:\ Program Files(x86)\ Microsoft SDKs \ Azure \ PowerShell \ ResourceManager \ AzureResourceManager \ AzureRM.Storage下 以及C:\ Program Files(x86)\ Microsoft SDKs \ Azure \ PowerShell \ Storage \ Azure.Storage

中存在的更高版本(v8.6.0.0)文件

为了在Azure存储表上执行操作,v8.6.0.0是处理所有Azure存储表操作所必需的操作。 默认情况下,任何对象(例如下面的对象)都使用位于AzureRm.Storage文件夹中的文件 -

组装------ Microsoft.WindowsAzure.Storage,Version = 8.1.1.0,Culture = neutral,PublicKeyToken = 31bf3856ad364e35

1 个答案:

答案 0 :(得分:0)

解决方法是指定新对象时要与PowerShell Azure.Storage模块对齐的版本:

$temp = New-Object -TypeName "Microsoft.WindowsAzure.Storage.Table.DynamicTableEntity,Microsoft.WindowsAzure.Storage, Version=8.6.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35"

注意:在最新的PowerShell 5.1.1中,它将是8.6.0;在之前的PowerShell版本中,Microsoft.WindowsAzure.Storage版本是不同的。

有关详细信息,请参阅“#5030”。