当我们尝试在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
答案 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”。