我正在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/