我正在PowerShell中创建一个字符串对象数组,需要将其传递到需要一个string []的Xceed zip库方法中,但是每次都会收到错误消息。这让我想知道PowerShell数组是否不是.NET数组。这是一些代码:

$string_list = @()
foreach($f in $file_list)
{
    $string_list += $f.FullName
}
[Xceed.Zip.QuickZip]::Zip("C:\new.zip", $true, $false, $false, $string_list)

我收到的错误消息是“将文件添加到zip文件时发生错误”。如果我将这样的值硬编码,它将起作用:
[Xceed.Zip.QuickZip]::Zip("C:\new.zip", $true, $false, $false, "test.txt", "test2.txt", "test3.txt")

有人可以帮我解决这个问题吗?我不明白会有什么不同...

编辑:我已经测试并确认我的$ string_list数组由System.String对象组成

最佳答案

当您指定时:

$string_list = @()

您没有为PowerShell提供类型信息,因此它创建了一个System.Object数组,该数组可以容纳任何对象:
PS> ,$string_list | Get-Member

   TypeName: System.Object[]

尝试指定特定的数组类型(字符串数组),如下所示:
PS> [string[]]$string_list = @()
PS> ,$string_list | Get-Member


   TypeName: System.String[]

关于.net - PowerShell数组仅仅是.NET数组吗?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/1337810/

10-12 12:40
查看更多