我想删除Azure数据湖文件夹下的所有文件,并且我正在编写以下Powershell脚本来实现它。
$tenantid = "xxxx-xxxxx-xxxxxxx-xxx"
$serviceprincipalid = "xxxx-xxxxxx-xxxxxxx-xxx"
$serviceprincipalkey = ConvertTo-SecureString "xxxxxxxxxxxxx" -AsPlainText -Force
$psCred = New-Object System.Management.Automation.PSCredential($serviceprincipalid,$serviceprincipalkey)
$adlspath = "/Demo/"
$accountname = "testserv01"
Login-AzureRmAccount -Credential $psCred -TenantId $tenantid -ServicePrincipal
$AllFiles = New-Object Collections.Generic.List[Microsoft.Azure.Commands.DataLakeStore.Models.DataLakeStoreItem];
$AllFiles = Get-AzureRmDataLakeStoreChildItem -AccountName $accountname -Path $adlspath
foreach($DelFiles in $AllFiles)
{
$delfilepath = $adlspath + $DelFiles.Name
Remove-AzureRmDataLakeStoreItem -AccountName $accountname -Paths $delfilepath -Force:$true
}
注意:出于安全原因,我屏蔽了某些值。
但是,这样做时出现以下错误:
$AllFiles = New-Object "System.Collections.Generic.List``1[Microsoft.Azure.Commands.DataLakeStore.Models.DataLakeStoreItem]"
New-Object : Cannot find type [System.Collections.Generic.List`1[Microsoft.Azure.Commands.DataLakeStore.Models.DataLakeStoreItem]]: make sure the assembly containing this type is loaded.
答案 0 :(得分:0)
我看到很多帖子,人们在其中运行您所拥有的代码。看起来他们使用的AzureRM版本与您现在使用的版本之间发生了某些事情。
在原始Windows 10系统上,我下载了AzureRM模块...
Install-Module -Name AzureRM
Import-Module -Name AzureRM
然后我尝试运行违规行。
New-Object Collections.Generic.List[Microsoft.Azure.Commands.DataLakeStore.Models.DataLakeStoreItem]
然后,我得到了以下内容。
New-Object : Cannot find type
[Collections.Generic.List[Microsoft.Azure.Commands.DataLakeStore.Models.DataLakeStoreItem]]: verify that the assembly
containing this type is loaded.
At line:1 char:1
+ New-Object Collections.Generic.List[Microsoft.Azure.Commands.DataLake ...
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+ CategoryInfo : InvalidType: (:) [New-Object], PSArgumentException
+ FullyQualifiedErrorId : TypeNotFound,Microsoft.PowerShell.Commands.NewObjectCommand
如果我加载了4.2.1 AzureRM模块...
Install-Module -Name AzureRM -RequiredVersion 4.2.1
Import-Module -Name AzureRM
然后我尝试执行令人反感的命令,但没有收到错误消息。
您必须更深入地了解更改,但是作为快速而肮脏的修复程序,请使用旧版本。创建带有您正在运行的代码的帖子时,以AzureRM的版本为目标。