PowerShell阵列只是.NET阵列吗?

Jim*_*iel 5 .net arrays string powershell

我在PowerShell中创建了一个字符串对象数组,需要将其传递给需要字符串[] 的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)
Run Code Online (Sandbox Code Playgroud)

我得到的错误说"将文件添加到zip文件时出错".如果我硬编码这样的值它可以工作:

[Xceed.Zip.QuickZip]::Zip("C:\new.zip", $true, $false, $false, "test.txt", "test2.txt", "test3.txt")
Run Code Online (Sandbox Code Playgroud)

有人可以帮我解决这个问题吗?我无法理解它的区别是什么......

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

Kei*_*ill 16

当您指定:

$string_list = @()
Run Code Online (Sandbox Code Playgroud)

您已经为PowerShell提供了没有类型信息,因此它创建了一个System.Object数组,该数组是一个可以容纳任何对象的数组:

PS> ,$string_list | Get-Member

   TypeName: System.Object[]
Run Code Online (Sandbox Code Playgroud)

尝试指定特定的数组类型(字符串数组),如下所示:

PS> [string[]]$string_list = @()
PS> ,$string_list | Get-Member


   TypeName: System.String[]
Run Code Online (Sandbox Code Playgroud)