无法在Powershell脚本中加载和利用dll函数

时间:2018-07-29 19:17:05

标签: c# powershell azure

我想删除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.

1 个答案:

答案 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

然后我尝试执行令人反感的命令,但没有收到错误消息。

enter image description here

您必须更深入地了解更改,但是作为快速而肮脏的修复程序,请使用旧版本。创建带有您正在运行的代码的帖子时,以AzureRM的版本为目标。