我正在尝试使用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
在另一个租户上,我曾经能够执行这些命令,并且所有命令都有效。
我在做什么错了?
感谢您的帮助
答案 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