新AzurermDatalakestreitem';用户代理';标题必须修改错误

新AzurermDatalakestreitem';用户代理';标题必须修改错误,azure,powershell,azure-data-lake,Azure,Powershell,Azure Data Lake,我正在尝试使用powershell在Azure Data Lake Store Gen 1中创建一些新文件夹,但是新的AzureRmDataLakeStoreItem和新的AZDataLakeStoreItem都返回错误 我对整个ADL有RWX权限,并且我有PS版本 主要次要构建修订 5117134590 当我跑的时候 Test-AzDataLakeStoreAccount -Name "weudevpocdtl" 我得到了真正的回应 但是,当我跑步时: New-AZDataLakeSto

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

我对整个ADL有RWX权限,并且我有PS版本

主要次要构建修订


5117134590

当我跑的时候

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 : 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
在另一个租户上,我曾经能够执行这些命令,并且一切正常

我做错了什么


感谢Data Lake团队提供的帮助,请参阅-这是SDK使用的Httpwebrequest类的问题。为httpwebrequest设置useragent在netframework和netcore中是不同的:

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

net standard webReq.Headers["User-Agent"] = client.GetUserAgent()
如果您尝试在NETFramework中稍后执行此操作,则会出现上面提到的错误

当您使用此az模块时,它正在使用我们SDK的netstandard dll。当您从windows powershell使用它时,它试图在netframework上使用net标准dll,这会导致此错误

解决方案:

我在net core powershell中测试了这个。它运行良好。 我们正在从httpwebrequest转移到httpclient,这可能会解决这个问题

因此,基本上,如果您使用的是windows powershell,请使用azurerm,或者使用powershell netcore中的Az

报告了相同的错误,下面是GitHub已知问题的链接

我建议您使用Powershell core,

那就行了

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

在PowerShell中,如何添加用户代理?
Get-AzureRmDataLakeStoreItem -Account "AccountName" -Path "/"
New-AzureRmDataLakeStoreItem -Account "AccountName" -Path "/Staging" -Folder