New-AzureRmDataLakeStoreItem'User-Agent'标头必须修改错误

时间:2019-03-29 18:24:30

标签: azure powershell azure-data-lake

我正在尝试使用Powershell在Azure Data Lake Store Gen 1中创建一些新文件夹,但是New-AzureRmDataLakeStoreItem和New-AZDataLakeStoreItem都会返回错误。

我对整个ADLS都具有RWX权限,并且我具有PS版本

主要版本修订


5 1 17134 590

我跑步时

Test-AzDataLakeStoreAccount -Name "weudevpocdtl" 

我得到了真实的答复。

但是,当我跑步时:

New-AZDataLakeStoreItem  -Account "weudevpocdtl" -Path "/PowerShellTest" -Folder

我得到了错误:

New-AZDataLakeStoreItem : Error in getting metadata for path /PowerShellTest.
Operation: GETFILESTATUS failed with   Unknown Error: The 'User-Agent' header must be modified using the appropriate property or method.
Parameter name: name Source: System StackTrace:    at System.Net.WebHeaderCollection.ThrowOnRestrictedHeader(String headerName)
   at System.Net.WebHeaderCollection.Set(String name, String value)
   at Microsoft.Azure.DataLake.Store.WebTransport.AssignCommonHttpHeaders(HttpWebRequest webReq, AdlsClient client, RequestOptions req, String token, String opMethod, IDictionary`2 
customHeaders, Int32 postRequestLength)
   at Microsoft.Azure.DataLake.Store.WebTransport.<MakeSingleCallAsync>d__22.MoveNext().
.
Last encountered exception thrown after 5 tries. [The 'User-Agent' header must be modified using the appropriate property or method.
Parameter name: name,The 'User-Agent' header must be modified using the appropriate property or method.
Parameter name: name,The 'User-Agent' header must be modified using the appropriate property or method.
Parameter name: name,The 'User-Agent' header must be modified using the appropriate property or method.
Parameter name: name,The 'User-Agent' header must be modified using the appropriate property or method.
Parameter name: name]
[ServerRequestId:]
At line:1 char:1
+ New-AZDataLakeStoreItem  -Account "weudevpocdtl" -Path "/PowerS ...
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    + CategoryInfo          : CloseError: (:) [New-AzDataLakeStoreItem], AdlsException
    + FullyQualifiedErrorId : Microsoft.Azure.Commands.DataLakeStore.NewAzureDataLakeStoreItem

当我跑步

New-AzureRmDataLakeStoreItem  -Account "weudevpocdtl" -Path "/PowerShellTest" -Folder

我收到错误消息:

New-AzureRmDataLakeStoreItem : Method 'get_SerializationSettings' in type 'Microsoft.Azure.Management.Internal.Resources.ResourceManagementClient' from assembly 
'Microsoft.Azure.Commands.ResourceManager.Common, Version=4.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35' does not have an implementation.
At line:1 char:1
+ New-AzureRmDataLakeStoreItem  -Account "weunappocdtl" -Path "/P ...
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    + CategoryInfo          : NotSpecified: (:) [New-AzureRmDataLakeStoreItem], TypeLoadException
    + FullyQualifiedErrorId : System.TypeLoadException,Microsoft.Azure.Commands.DataLakeStore.NewAzureDataLakeStoreItem

在另一个租户上,我曾经能够执行这些命令,并且所有命令都有效。

我在做什么错了?

感谢您的帮助

1 个答案:

答案 0 :(得分:1)

根据Data Lake Team,请参阅link-这是我们的SDK使用的Httpwebrequest类的问题。在netframework和netcore中,为httpwebrequest设置useragent的方法有所不同:

NET framework: webReq.UserAgent = client.GetUserAgent();

net standard webReq.Headers["User-Agent"] = client.GetUserAgent()

如果您尝试在.net框架中进行后续操作,则会遇到上面的错误。

当您使用此z模块时,该模块正在使用我们SDK的netstandard dll。当您从Windows Powershell中使用它时,它会尝试在netframework上使用net standard dll,从而导致此错误。

解决方案:

我在网络核心Powershell中对此进行了测试。运行正常。 我们正在从httpwebrequest转移到httpclient,这可能会解决该问题。

因此,基本上,如果您使用的是Windows powershell,请使用azurerm,否则请使用powershell netcore中的Az。

已报告相同的错误,这是GitHub已知问题的链接。

https://github.com/Azure/azure-powershell/issues/8141

我建议您使用Powershell内核,  https://docs.microsoft.com/en-us/powershell/scripting/install/installing-powershell-core-on-windows?view=powershell-6

那应该可以工作

Get-AzureRmDataLakeStoreItem -Account "AccountName" -Path "/"
New-AzureRmDataLakeStoreItem -Account "AccountName" -Path "/Staging" -Folder