Jsou PowerShell Arrays jen .NET Pole?

hlasů
4

Jsem vytvoření pole objektů typu string v PowerShell , která musí být předány do Xceed metodou zip knihovny, která očekává řetězec [], ale já se chybová pokaždé. To je pro mě zajímalo, jestli je pole PowerShell je něco jiného než .NET pole. Zde je kód:

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

Došlo k chybě jsem si říká: „Při přidávání souborů do souboru zip došlo k chybě.“ Kdybych tvrdě kód v hodnotách takhle to funguje:

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

Může mi někdo pomoci přijít na to? Nemohu pochopit, jaký je rozdíl by bylo ...

EDIT: jsem otestoval a potvrdil, že my $ string_list pole se skládá z System.string objektů

Položena 26/08/2009 v 23:08
zdroj uživatelem
V jiných jazycích...                            


1 odpovědí

hlasů
15

Při zadání:

$string_list = @()

Dal jsi PowerShell žádný druh informací, takže se vytvoří řada System.Object, což je pole, které může mít jakýkoli objekt:

PS> ,$string_list | Get-Member

   TypeName: System.Object[]

Zkuste zadat specifický typ Array (pole řetězců) jako tak:

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


   TypeName: System.String[]
Odpovězeno 26/08/2009 v 23:20
zdroj uživatelem

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