São PowerShell Arrays Arrays apenas .NET?

votos
4

Estou criando um array de objetos String em PowerShell , que precisa ser passado em um Xceed método biblioteca zip que espera um string [], mas eu recebo um erro toda vez. Isso me faz pensar se a matriz PowerShell é algo diferente de uma matriz .NET. Aqui está um código:

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

O erro que recebo diz Ocorreu um erro ao adicionar arquivos para o arquivo zip. Se eu código rígido em valores como este funciona:

[Xceed.Zip.QuickZip]::Zip(C:\new.zip, $true, $false, $false, test.txt, test2.txt, test3.txt)

Alguém pode me ajudar a descobrir isso? Eu não consigo entender o que a diferença seria ...

EDIT: Eu tenho testado e confirmado que o meu array $ STRING_LIST é composto de objetos System.String

Publicado 26/08/2009 em 23:08
fonte usuário
Em outras línguas...                            


1 respostas

votos
15

Quando você especifica:

$string_list = @()

Você deu PowerShell sem info tipo para que ele cria uma matriz de System.Object que é uma matriz que pode conter qualquer objeto:

PS> ,$string_list | Get-Member

   TypeName: System.Object[]

Tente especificar um tipo de matriz específica (array string) assim:

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


   TypeName: System.String[]
Respondeu 26/08/2009 em 23:20
fonte usuário

Cookies help us deliver our services. By using our services, you agree to our use of cookies. Learn more